From 258e3afbadce6fca39001de5ad22a10ff496ddcf Mon Sep 17 00:00:00 2001 From: YaroslavnaMatkova Date: Tue, 15 Jun 2021 14:03:30 +0300 Subject: [PATCH 01/58] Typescript migration of storage modules part 2 (#68) * utilities migrated to TS * scheme-map migrated to TS * migrated quick-storage to ts * type definitions improved * converter functions parameters updated to not use objects * redundant comments removed, unwanted changes reverted, bugfix * got rid of unwanted any-types * addressed comments * renamed Value type to StoredValue * renamed Record type * used embedded Record type instead of ObjectOf and index signatures * removed unneeded onerror declarations * restored findIndex non-array key case * avoid ternary operator in function calls * unwanted undefined replaced with null * store names types replaced with enums * used null instead of undefined * got rid of several as type casts * moved valueIsRecord type guard into types.ts * removed unneeded declaration * Capitalised enum members --- .eslintrc | 3 +- package-lock.json | 6455 ++++++++++++------- package.json | 39 +- src/global.d.ts | 10 +- src/sdk/__tests__/storage/converter.spec.js | 349 +- src/sdk/storage/converter.ts | 107 +- src/sdk/storage/indexeddb.ts | 233 +- src/sdk/storage/localstorage.ts | 278 +- src/sdk/storage/quick-storage.ts | 44 +- src/sdk/storage/scheme-map.ts | 191 +- src/sdk/storage/scheme.ts | 155 +- src/sdk/storage/storage.ts | 200 +- src/sdk/storage/types.ts | 49 +- src/sdk/utilities.js | 206 - src/sdk/utilities.ts | 140 + 15 files changed, 5026 insertions(+), 3433 deletions(-) delete mode 100644 src/sdk/utilities.js create mode 100644 src/sdk/utilities.ts diff --git a/.eslintrc b/.eslintrc index 772324c..d1e6ea0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -44,7 +44,8 @@ "semi": ["error", "never"], "space-before-function-paren": ["error", "never"], "eol-last": "error", - "@typescript-eslint/ban-types": "warn" + "@typescript-eslint/ban-types": "warn", + "@typescript-eslint/explicit-module-boundary-types": "off" } }, { diff --git a/package-lock.json b/package-lock.json index 11a8f98..6b39f69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,37 +1,36 @@ { "name": "@adjustcom/adjust-web-sdk", - "version": "5.1.1", + "version": "5.1.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@adjustcom/adjust-web-sdk", - "version": "5.1.1", + "version": "5.1.2", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.11.2" + "@babel/runtime": "^7.12.13" }, "devDependencies": { - "@babel/cli": "^7.11.6", - "@babel/core": "^7.11.6", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-transform-flow-comments": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.11.5", - "@babel/preset-env": "^7.11.5", - "@babel/preset-flow": "^7.10.4", - "@babel/preset-typescript": "^7.10.4", - "@types/jest": "^26.0.23", - "@typescript-eslint/eslint-plugin": "^4.9.0", - "@typescript-eslint/parser": "^4.9.0", + "@babel/cli": "^7.12.13", + "@babel/core": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-transform-flow-comments": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.13", + "@babel/preset-env": "^7.12.13", + "@babel/preset-flow": "^7.12.13", + "@babel/preset-typescript": "^7.12.13", + "@typescript-eslint/eslint-plugin": "^4.14.2", + "@typescript-eslint/parser": "^4.14.2", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", - "babel-loader": "^8.0.6", + "babel-loader": "^8.2.2", "babel-plugin-es6-promise": "^1.1.1", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "core-js-bundle": "^3.6.5", + "core-js-bundle": "^3.8.3", "css-loader": "^1.0.1", "es6-promise": "^4.2.8", - "eslint": "^7.14.0", + "eslint": "^7.19.0", "eslint-loader": "^4.0.2", "eslint-plugin-flowtype": "^5.2.0", "eslint-plugin-jest": "^24.3.6", @@ -39,11 +38,11 @@ "file-loader": "^2.0.0", "flow-bin": "^0.106.3", "flow-webpack-plugin": "^1.2.0", - "fork-ts-checker-webpack-plugin": "^6.0.4", + "fork-ts-checker-webpack-plugin": "^6.1.0", "html-loader": "^0.5.5", "html-webpack-plugin": "^3.2.0", "jest": "^24.9.0", - "jest-localstorage-mock": "^2.4.0", + "jest-localstorage-mock": "^2.4.6", "mini-css-extract-plugin": "^0.4.5", "node-sass": "^4.14.1", "npm-run-all": "^4.1.5", @@ -53,24 +52,22 @@ "style-loader": "^0.23.1", "terser": "^3.17.0", "terser-webpack-plugin": "^1.4.1", - "typescript": "^4.0.3", - "webpack": "^4.39.3", + "typescript": "^4.1.3", + "webpack": "^4.46.0", "webpack-cli": "^3.3.7", - "webpack-dev-server": "^3.11.0" + "webpack-dev-server": "^3.11.2" } }, "node_modules/@babel/cli": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", - "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.5.tgz", + "integrity": "sha512-poegjhRvXHWO0EAsnYajwYZuqcz7gyfxwfaecUESxDujrqOivf3zrjFbub8IJkrqEaz3fvJWh001EzxBub54fg==", "dev": true, "dependencies": { - "chokidar": "^2.1.8", "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" @@ -78,51 +75,222 @@ "bin": { "babel": "bin/babel.js", "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/cli/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@babel/cli/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/cli/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/cli/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/@babel/cli/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/cli/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/@babel/cli/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@babel/cli/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/cli/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@babel/cli/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@babel/cli/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "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, "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.5.tgz", + "integrity": "sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w==", "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, "engines": { "node": ">=6.9.0" } @@ -145,276 +313,412 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", - "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "dependencies": { - "@babel/types": "^7.11.5", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz", + "integrity": "sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "dev": true, "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "node_modules/@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true, - "dependencies": { - "lodash": "^4.17.19" + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "dev": true, "dependencies": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dev": true, "dependencies": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "dev": true, "dependencies": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -423,140 +727,269 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.5.tgz", + "integrity": "sha512-tbD/CG3l43FIXxmu4a7RBe4zH7MLJ+S/lFowPFO7HetS2hyOZ/0nnnznegDuzFzfkyQYTxqdTH/hKmuBngaDAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.5.tgz", + "integrity": "sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/compat-data": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -566,15 +999,36 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { @@ -584,6 +1038,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -593,15 +1050,24 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -611,6 +1077,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -620,6 +1089,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -629,6 +1101,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -638,6 +1113,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { @@ -656,6 +1134,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -665,469 +1146,750 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", - "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.5.tgz", + "integrity": "sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-flow-comments": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.10.4.tgz", - "integrity": "sha512-wiwS5fCzeWP71WLIzAoFAPTk0GLnhpUfGV4ygwX+Zib6nYiaLhUOWsjLt6+hCwCoH/bwZSg7Qzlc2AuzXg/mbg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.14.5.tgz", + "integrity": "sha512-VAme+wF0d2PtCsW9P4UQ5laJ9KzYBXYOEEe1/16dlxM3d5oRx8I2u6hXQaOCzFqhciAz9HsgHvqMVT0JVI4n7Q==", "dev": true, "dependencies": { - "@babel/generator": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" + "@babel/generator": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", - "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", + "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.5.tgz", + "integrity": "sha512-+Xe5+6MWFo311U8SchgeX5c1+lJM+eZDBZgD+tvXu9VVQPXwwVzeManMMjYX6xw2HczngfOSZjoFYKwdeB/Jvw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz", - "integrity": "sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", + "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", - "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", + "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.14.6", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.5.tgz", + "integrity": "sha512-ci6TsS0bjrdPpWGnQ+m4f+JSSzDKlckqKIJJt9UZ/+g7Zz9k0N8lYU8IeLg/01o2h8LyNZDMLGgRLDTxpudLsA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.5", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.5", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.5", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.5", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.14.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/preset-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.10.4.tgz", - "integrity": "sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.14.5.tgz", + "integrity": "sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-flow-strip-types": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-flow-strip-types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { @@ -1144,49 +1906,89 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz", - "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", + "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.5.tgz", + "integrity": "sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/debug": { @@ -1208,14 +2010,16 @@ "dev": true }, "node_modules/@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@cnakazawa/watch": { @@ -1235,19 +2039,18 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -1265,27 +2068,26 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" - } - }, - "node_modules/@eslint/eslintrc/node_modules/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, - "engines": { - "node": ">= 4" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@eslint/eslintrc/node_modules/ms": { @@ -1549,298 +2351,154 @@ "node": ">= 6" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/babel__core": { - "version": "7.1.10", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.10.tgz", - "integrity": "sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.3.tgz", - "integrity": "sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz", - "integrity": "sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "26.0.23", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", - "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.2", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", + "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", "dev": true, + "optional": true, "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^5.1.2", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "optional": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@types/jest/node_modules/@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest/node_modules/@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/jest/node_modules/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, - "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8" } }, - "node_modules/@types/jest/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 8" } }, - "node_modules/@types/jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "node_modules/@types/jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@types/jest/node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "node_modules/@types/babel__core": { + "version": "7.1.10", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.10.tgz", + "integrity": "sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw==", "dev": true, - "engines": { - "node": ">= 10.14.2" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@types/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/@types/babel__template": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.3.tgz", + "integrity": "sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@types/jest/node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "node_modules/@types/babel__traverse": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz", + "integrity": "sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A==", "dev": true, - "engines": { - "node": ">= 10.14.2" + "dependencies": { + "@babel/types": "^7.3.0" } }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, - "node_modules/@types/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, "node_modules/@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==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "node_modules/@types/minimatch": { @@ -1889,21 +2547,35 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz", - "integrity": "sha512-fABclAX2QIEDmTMk6Yd7Muv1CzFLwWM4505nETzRHpP3br6jfahD9UUJkhnJ/g2m7lwfz8IlswcwGGPGiq9exw==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.27.0.tgz", + "integrity": "sha512-DsLqxeUfLVNp3AO7PC3JyaddmEHTtI9qTSAs+RB6ja27QvIM0TA8Cizn1qcS6vOu+WDLFJzkwkgweiyFhssDdQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.11.1", - "@typescript-eslint/scope-manager": "4.11.1", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.27.0", + "@typescript-eslint/scope-manager": "4.27.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "lodash": "^4.17.21", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { @@ -1937,9 +2609,9 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1958,35 +2630,72 @@ "dev": true }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz", - "integrity": "sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.27.0.tgz", + "integrity": "sha512-n5NlbnmzT2MXlyT+Y0Jf0gsmAQzCnQSWXKy4RGSXVStjDvS5we9IWbh7qRVKdGcxT0WYlgcCYUK/HRg7xFhvjQ==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.27.0", + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/typescript-estree": "4.27.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/@typescript-eslint/parser": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.1.tgz", - "integrity": "sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.27.0.tgz", + "integrity": "sha512-XpbxL+M+gClmJcJ5kHnUpBGmlGdgNvy6cehgR6ufyxkEJMGP25tZKCaKyC0W/JVpuhU3VU1RBn7SYUPKSMqQvQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.27.0", + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/typescript-estree": "4.27.0", + "debug": "^4.3.1" }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { @@ -2008,44 +2717,60 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", - "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.27.0.tgz", + "integrity": "sha512-DY73jK6SEH6UDdzc6maF19AHQJBFVRf6fgAXHPXCGEmpqD4vYgPEzqpFz1lf/daSbOcMpPPj9tyXXDPW2XReAw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1" + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/visitor-keys": "4.27.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/types": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", - "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.27.0.tgz", + "integrity": "sha512-I4ps3SCPFCKclRcvnsVA/7sWzh7naaM/b4pBO2hVxnM3wrU51Lveybdw5WoIktU/V4KfXrTt94V9b065b/0+wA==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz", - "integrity": "sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.27.0.tgz", + "integrity": "sha512-KH03GUsUj41sRLLEy2JHstnezgpS5VNhrJouRdmh6yNdQ+yl8w5LrSwBkExM+jWwCJa7Ct2c8yl8NdtNRyQO6g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/visitor-keys": "4.27.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { @@ -2058,6 +2783,11 @@ }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { @@ -2079,9 +2809,9 @@ "dev": true }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2100,16 +2830,20 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", - "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.27.0.tgz", + "integrity": "sha512-es0GRYNZp0ieckZ938cEANfEhsfHrzuLrePukLKtY3/KPXcq1Xd555Mno9/GOgXhKzn0QfkDLVgqWO3dGY80bg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/types": "4.27.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@webassemblyjs/ast": { @@ -2362,7 +3096,10 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, "node_modules/acorn-walk": { "version": "6.2.0", @@ -2793,58 +3530,160 @@ "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-eslint/node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "dependencies": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/babel-eslint/node_modules/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==", + "node_modules/babel-loader/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "node_modules/babel-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "dependencies": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 6.9" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/babel-messages": { @@ -2902,6 +3741,54 @@ "node": ">= 6" } }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz", + "integrity": "sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.9.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", @@ -3407,21 +4294,26 @@ } }, "node_modules/browserslist": { - "version": "4.14.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", - "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001135", - "electron-to-chromium": "^1.3.571", - "escalade": "^3.1.0", - "node-releases": "^1.1.61" + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, "node_modules/bser": { @@ -3644,10 +4536,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001140", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001140.tgz", - "integrity": "sha512-xFtvBtfGrpjTOxTpjP5F2LmN04/ZGfYV8EQzUIC/RmKpdrmzJrjqlJ4ho7sGuAMPko2/Jl08h7x9uObCfBFaAA==", - "dev": true + "version": "1.0.30001237", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz", + "integrity": "sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/capture-exit": { "version": "2.0.0", @@ -3941,6 +4837,12 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4127,19 +5029,28 @@ "dev": true }, "node_modules/core-js-bundle": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.6.5.tgz", - "integrity": "sha512-awf49McIBT3sDXceSex69w/i7PMXQwxI4ZqknCtaYbW4Q0u0HUZiaQLlPD6pU2nFBofIowgWIS1ANgHjqnQu4Q==", - "dev": true + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.14.0.tgz", + "integrity": "sha512-448lTYr97FQDgccrIo+uC7pDTiM0xuG8pmSMrRM0dV+EDhbiw2Sw4aOYAgMNGbUvY+rA+QB5DIxlnxfRW+mKvw==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, "node_modules/core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.14.0.tgz", + "integrity": "sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A==", "dev": true, "dependencies": { - "browserslist": "^4.8.5", + "browserslist": "^4.16.6", "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { @@ -4298,9 +5209,9 @@ } }, "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -4309,6 +5220,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/css-declaration-sorter/node_modules/source-map": { @@ -4356,15 +5271,19 @@ } }, "node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dev": true, "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-select-base-adapter": { @@ -4373,6 +5292,18 @@ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", "dev": true }, + "node_modules/css-select/node_modules/nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/css-selector-tokenizer": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", @@ -4406,12 +5337,15 @@ } }, "node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "dev": true, "engines": { - "node": "*" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/cssesc": { @@ -4483,9 +5417,9 @@ } }, "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -4494,6 +5428,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/cssnano-preset-default/node_modules/source-map": { @@ -4548,9 +5486,9 @@ } }, "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -4559,6 +5497,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/cssnano-util-raw-cache/node_modules/source-map": { @@ -4592,9 +5534,9 @@ } }, "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -4603,6 +5545,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/cssnano/node_modules/source-map": { @@ -5038,9 +5984,9 @@ "dev": true }, "node_modules/dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dev": true, "dependencies": { "ip": "^1.1.0", @@ -5119,24 +6065,72 @@ } }, "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "dev": true, "dependencies": { - "domelementtype": "1" + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/domhandler/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, "node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "dev": true, "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/domutils/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/domutils/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -5178,9 +6172,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.3.576", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.576.tgz", - "integrity": "sha512-uSEI0XZ//5ic+0NdOqlxp0liCD44ck20OAGyLMSymIWTEAtHKVJi6JM18acOnRgUgX7Q65QqnI+sNncNvIy8ew==", + "version": "1.3.752", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz", + "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==", "dev": true }, "node_modules/elliptic": { @@ -5238,9 +6232,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -5373,9 +6367,9 @@ } }, "node_modules/escalade": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz", - "integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { "node": ">=6" @@ -5429,29 +6423,31 @@ } }, "node_modules/eslint": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", - "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", "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.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -5459,7 +6455,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -5468,7 +6464,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -5477,6 +6473,9 @@ }, "engines": { "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-loader": { @@ -5757,10 +6756,22 @@ "node": ">=6.0" } }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" @@ -5770,15 +6781,18 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/has-flag": { @@ -5790,15 +6804,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/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, - "engines": { - "node": ">= 4" - } - }, "node_modules/eslint/node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5995,9 +7000,9 @@ } }, "node_modules/esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -6079,9 +7084,9 @@ } }, "node_modules/eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "dependencies": { "original": "^1.0.0" @@ -6399,9 +7404,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6440,9 +7445,9 @@ } }, "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" @@ -6461,16 +7466,16 @@ } }, "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, "node_modules/fast-glob/node_modules/to-regex-range": { @@ -6504,24 +7509,24 @@ "dev": true }, "node_modules/fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=0.8.0" } }, "node_modules/fb-watchman": { @@ -6540,9 +7545,9 @@ "dev": true }, "node_modules/file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "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, "dependencies": { "flat-cache": "^3.0.4" @@ -6694,12 +7699,15 @@ }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "node_modules/flow-bin": { @@ -6758,9 +7766,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.0.8.tgz", - "integrity": "sha512-2K6Ozamm6TSL5heFIwPhX5+VsOBiiKf9PzaPFS7kwzrILKX+jlN3DBQc5v/6YYZ2oKJyImg3bY0/uZc7cDbDYQ==", + "version": "6.2.10", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.10.tgz", + "integrity": "sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.8.3", @@ -6770,6 +7778,7 @@ "cosmiconfig": "^6.0.0", "deepmerge": "^4.2.2", "fs-extra": "^9.0.0", + "glob": "^7.1.6", "memfs": "^3.1.2", "minimatch": "^3.0.4", "schema-utils": "2.7.0", @@ -6936,9 +7945,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" @@ -7301,9 +8310,9 @@ } }, "node_modules/gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -7462,9 +8471,9 @@ } }, "node_modules/globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "dependencies": { "array-union": "^2.1.0", @@ -7476,6 +8485,18 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" } }, "node_modules/globby/node_modules/slash": { @@ -7881,38 +8902,35 @@ } }, "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/htmlparser2/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -7942,6 +8960,12 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -8032,9 +9056,9 @@ "dev": true }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "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, "engines": { "node": ">= 4" @@ -8981,9 +10005,9 @@ } }, "node_modules/jest-localstorage-mock": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/jest-localstorage-mock/-/jest-localstorage-mock-2.4.3.tgz", - "integrity": "sha512-UgifkHKoWVRUoSqO4Z4Z+Hl1NbiYBVDlmkmulFFeRRneGECWAlAdGWJdyz+2NisjOZnnQoxQl0s5dQ7ch62Jxw==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/jest-localstorage-mock/-/jest-localstorage-mock-2.4.14.tgz", + "integrity": "sha512-B+Y0y3J4wBOHdmcFSicWmVYMFAZFbJvjs1EfRIzUJRg2UAK+YVVUgTn7/MdjENey5xbBKmraBmKY5EX+x1NJXA==", "dev": true, "engines": { "node": ">=6.16.0" @@ -9559,18 +10583,6 @@ "node": ">=6" } }, - "node_modules/levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "dependencies": { - "leven": "^3.1.0" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -9668,18 +10680,42 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/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 + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "node_modules/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 + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "node_modules/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 + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -10416,9 +11452,9 @@ } }, "node_modules/node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", "dev": true }, "node_modules/node-sass": { @@ -11172,12 +12208,15 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, "engines": { "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pidtree": { @@ -11316,9 +12355,9 @@ } }, "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11327,6 +12366,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-calc/node_modules/postcss-value-parser": { @@ -11373,9 +12416,9 @@ } }, "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11384,6 +12427,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-colormin/node_modules/source-map": { @@ -11421,9 +12468,9 @@ } }, "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11432,6 +12479,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-convert-values/node_modules/source-map": { @@ -11468,9 +12519,9 @@ } }, "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11479,6 +12530,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-discard-comments/node_modules/source-map": { @@ -11515,9 +12570,9 @@ } }, "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11526,6 +12581,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-discard-duplicates/node_modules/source-map": { @@ -11562,9 +12621,9 @@ } }, "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11573,6 +12632,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-discard-empty/node_modules/source-map": { @@ -11609,9 +12672,9 @@ } }, "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11620,6 +12683,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-discard-overridden/node_modules/source-map": { @@ -11659,9 +12726,9 @@ } }, "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11670,6 +12737,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-merge-longhand/node_modules/source-map": { @@ -11711,9 +12782,9 @@ } }, "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11722,6 +12793,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { @@ -11773,9 +12848,9 @@ } }, "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11784,6 +12859,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-minify-font-values/node_modules/source-map": { @@ -11823,9 +12902,9 @@ } }, "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11834,6 +12913,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-minify-gradients/node_modules/source-map": { @@ -11875,9 +12958,9 @@ } }, "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11886,6 +12969,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-minify-params/node_modules/source-map": { @@ -11925,9 +13012,9 @@ } }, "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -11936,6 +13023,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { @@ -12025,9 +13116,9 @@ } }, "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12036,6 +13127,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-charset/node_modules/source-map": { @@ -12074,9 +13169,9 @@ } }, "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12085,6 +13180,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-display-values/node_modules/source-map": { @@ -12124,9 +13223,9 @@ } }, "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12135,6 +13234,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-positions/node_modules/source-map": { @@ -12174,9 +13277,9 @@ } }, "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12185,6 +13288,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { @@ -12223,9 +13330,9 @@ } }, "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12234,6 +13341,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-string/node_modules/source-map": { @@ -12272,9 +13383,9 @@ } }, "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12283,6 +13394,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { @@ -12321,9 +13436,9 @@ } }, "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12332,6 +13447,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-unicode/node_modules/source-map": { @@ -12371,9 +13490,9 @@ } }, "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12382,6 +13501,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-url/node_modules/source-map": { @@ -12419,9 +13542,9 @@ } }, "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12430,6 +13553,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-normalize-whitespace/node_modules/source-map": { @@ -12468,9 +13595,9 @@ } }, "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12479,6 +13606,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-ordered-values/node_modules/source-map": { @@ -12518,9 +13649,9 @@ } }, "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12529,6 +13660,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-reduce-initial/node_modules/source-map": { @@ -12568,9 +13703,9 @@ } }, "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12579,6 +13714,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-reduce-transforms/node_modules/source-map": { @@ -12632,9 +13771,9 @@ } }, "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12685,9 +13824,9 @@ } }, "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -12696,6 +13835,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-unique-selectors/node_modules/source-map": { @@ -12963,6 +14106,26 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -13164,9 +14327,9 @@ } }, "node_modules/regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "node_modules/regenerate-unicode-properties": { @@ -13254,9 +14417,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -13290,16 +14453,16 @@ "dev": true }, "node_modules/renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dev": true, "dependencies": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" } }, "node_modules/repeat-element": { @@ -13398,6 +14561,15 @@ "node": ">=0.10.0" } }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -13554,10 +14726,27 @@ } }, "node_modules/run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } }, "node_modules/run-queue": { "version": "1.0.3", @@ -13965,6 +15154,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/slice-ansi/node_modules/ansi-styles": { @@ -13977,6 +15169,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/slice-ansi/node_modules/astral-regex": { @@ -14138,55 +15333,43 @@ } }, "node_modules/sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "dependencies": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "node_modules/sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dev": true, "dependencies": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" } }, "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/sockjs-client/node_modules/faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/sockjs-client/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/source-list-map": { @@ -14557,9 +15740,9 @@ "dev": true }, "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", @@ -14682,6 +15865,9 @@ "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/style-loader": { @@ -14726,9 +15912,9 @@ } }, "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -14737,6 +15923,10 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/stylehacks/node_modules/postcss-selector-parser": { @@ -14854,20 +16044,65 @@ "dev": true }, "node_modules/table": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", - "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10.0.0" } }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/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 + }, + "node_modules/table/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -15191,15 +16426,18 @@ "dev": true }, "node_modules/tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "dependencies": { "tslib": "^1.8.1" }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, "node_modules/tty-browserify": { @@ -15239,12 +16477,15 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "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, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/type-is": { @@ -15267,9 +16508,9 @@ "dev": true }, "node_modules/typescript": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", - "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", + "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -15698,9 +16939,9 @@ } }, "node_modules/watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -15708,20 +16949,17 @@ }, "optionalDependencies": { "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } }, "node_modules/watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "dependencies": { "chokidar": "^2.1.8" - }, - "engines": { - "node": "<8.10.0" } }, "node_modules/watchpack/node_modules/anymatch": { @@ -15808,9 +17046,9 @@ } }, "node_modules/watchpack/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "optional": true, "dependencies": { @@ -15885,9 +17123,9 @@ "dev": true }, "node_modules/webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "dependencies": { "@webassemblyjs/ast": "1.9.0", @@ -15898,7 +17136,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -15919,6 +17157,18 @@ }, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-cli": { @@ -15987,9 +17237,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "dependencies": { "ansi-html": "0.0.7", @@ -16012,11 +17262,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -16031,6 +17281,14 @@ }, "engines": { "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, "node_modules/webpack-dev-server/node_modules/debug": { @@ -16096,9 +17354,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "dependencies": { "async-limiter": "~1.0.0" @@ -16176,15 +17434,17 @@ } }, "node_modules/websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.8.0" } }, "node_modules/websocket-extensions": { @@ -16420,9 +17680,9 @@ } }, "node_modules/ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "dev": true, "dependencies": { "async-limiter": "~1.0.0" @@ -16545,66 +17805,180 @@ }, "dependencies": { "@babel/cli": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", - "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.5.tgz", + "integrity": "sha512-poegjhRvXHWO0EAsnYajwYZuqcz7gyfxwfaecUESxDujrqOivf3zrjFbub8IJkrqEaz3fvJWh001EzxBub54fg==", "dev": true, "requires": { - "chokidar": "^2.1.8", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "chokidar": "^3.4.0", "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "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, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "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" } }, "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.5.tgz", + "integrity": "sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w==", + "dev": true }, "@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "debug": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", @@ -16619,412 +17993,484 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "@babel/generator": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", - "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.11.5", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz", + "integrity": "sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.6.tgz", + "integrity": "sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==", "dev": true }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } + }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.5.tgz", + "integrity": "sha512-tbD/CG3l43FIXxmu4a7RBe4zH7MLJ+S/lFowPFO7HetS2hyOZ/0nnnznegDuzFzfkyQYTxqdTH/hKmuBngaDAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.5.tgz", + "integrity": "sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/compat-data": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.5" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -17037,12 +18483,21 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -17064,12 +18519,12 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-json-strings": { @@ -17135,467 +18590,497 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", - "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.5.tgz", + "integrity": "sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-flow-comments": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.10.4.tgz", - "integrity": "sha512-wiwS5fCzeWP71WLIzAoFAPTk0GLnhpUfGV4ygwX+Zib6nYiaLhUOWsjLt6+hCwCoH/bwZSg7Qzlc2AuzXg/mbg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.14.5.tgz", + "integrity": "sha512-VAme+wF0d2PtCsW9P4UQ5laJ9KzYBXYOEEe1/16dlxM3d5oRx8I2u6hXQaOCzFqhciAz9HsgHvqMVT0JVI4n7Q==", "dev": true, "requires": { - "@babel/generator": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" + "@babel/generator": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", - "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", + "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.5.tgz", + "integrity": "sha512-+Xe5+6MWFo311U8SchgeX5c1+lJM+eZDBZgD+tvXu9VVQPXwwVzeManMMjYX6xw2HczngfOSZjoFYKwdeB/Jvw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-runtime": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz", - "integrity": "sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", + "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typescript": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", - "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", + "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.14.6", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.5.tgz", + "integrity": "sha512-ci6TsS0bjrdPpWGnQ+m4f+JSSzDKlckqKIJJt9UZ/+g7Zz9k0N8lYU8IeLg/01o2h8LyNZDMLGgRLDTxpudLsA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.5", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.5", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.5", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.5", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.14.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@babel/preset-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.10.4.tgz", - "integrity": "sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.14.5.tgz", + "integrity": "sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-flow-strip-types": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-flow-strip-types": "^7.14.5" } }, "@babel/preset-modules": { @@ -17612,51 +19097,72 @@ } }, "@babel/preset-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz", - "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz", + "integrity": "sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.14.5" } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + } } }, "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.5.tgz", + "integrity": "sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, "debug": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", @@ -17675,13 +19181,12 @@ } }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, @@ -17696,19 +19201,18 @@ } }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -17723,20 +19227,14 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, - "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 - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -17960,29 +19458,61 @@ "@types/yargs": "^13.0.0" } }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.2", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", + "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^5.1.2", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "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, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -18062,150 +19592,10 @@ "@types/istanbul-lib-report": "*" } }, - "@types/jest": { - "version": "26.0.23", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", - "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", - "dev": true, - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - } - }, - "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "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": "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 - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true - }, - "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 - }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true - }, - "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "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" - } - } - } - }, "@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==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/minimatch": { @@ -18254,18 +19644,19 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz", - "integrity": "sha512-fABclAX2QIEDmTMk6Yd7Muv1CzFLwWM4505nETzRHpP3br6jfahD9UUJkhnJ/g2m7lwfz8IlswcwGGPGiq9exw==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.27.0.tgz", + "integrity": "sha512-DsLqxeUfLVNp3AO7PC3JyaddmEHTtI9qTSAs+RB6ja27QvIM0TA8Cizn1qcS6vOu+WDLFJzkwkgweiyFhssDdQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.11.1", - "@typescript-eslint/scope-manager": "4.11.1", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.27.0", + "@typescript-eslint/scope-manager": "4.27.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "lodash": "^4.17.21", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { @@ -18293,9 +19684,9 @@ "dev": true }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "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" @@ -18310,29 +19701,40 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz", - "integrity": "sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.27.0.tgz", + "integrity": "sha512-n5NlbnmzT2MXlyT+Y0Jf0gsmAQzCnQSWXKy4RGSXVStjDvS5we9IWbh7qRVKdGcxT0WYlgcCYUK/HRg7xFhvjQ==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.27.0", + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/typescript-estree": "4.27.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } } }, "@typescript-eslint/parser": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.1.tgz", - "integrity": "sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.27.0.tgz", + "integrity": "sha512-XpbxL+M+gClmJcJ5kHnUpBGmlGdgNvy6cehgR6ufyxkEJMGP25tZKCaKyC0W/JVpuhU3VU1RBn7SYUPKSMqQvQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.27.0", + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/typescript-estree": "4.27.0", + "debug": "^4.3.1" }, "dependencies": { "debug": { @@ -18353,35 +19755,34 @@ } }, "@typescript-eslint/scope-manager": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", - "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.27.0.tgz", + "integrity": "sha512-DY73jK6SEH6UDdzc6maF19AHQJBFVRf6fgAXHPXCGEmpqD4vYgPEzqpFz1lf/daSbOcMpPPj9tyXXDPW2XReAw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1" + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/visitor-keys": "4.27.0" } }, "@typescript-eslint/types": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", - "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.27.0.tgz", + "integrity": "sha512-I4ps3SCPFCKclRcvnsVA/7sWzh7naaM/b4pBO2hVxnM3wrU51Lveybdw5WoIktU/V4KfXrTt94V9b065b/0+wA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz", - "integrity": "sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.27.0.tgz", + "integrity": "sha512-KH03GUsUj41sRLLEy2JHstnezgpS5VNhrJouRdmh6yNdQ+yl8w5LrSwBkExM+jWwCJa7Ct2c8yl8NdtNRyQO6g==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.27.0", + "@typescript-eslint/visitor-keys": "4.27.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { @@ -18409,9 +19810,9 @@ "dev": true }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "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" @@ -18426,12 +19827,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", - "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.27.0.tgz", + "integrity": "sha512-es0GRYNZp0ieckZ938cEANfEhsfHrzuLrePukLKtY3/KPXcq1Xd555Mno9/GOgXhKzn0QfkDLVgqWO3dGY80bg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/types": "4.27.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -18672,7 +20073,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "6.2.0", @@ -19046,34 +20448,104 @@ } } }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "dev": true, - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - } - }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", @@ -19123,6 +20595,44 @@ "@types/babel__traverse": "^7.0.6" } }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz", + "integrity": "sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", @@ -19589,15 +21099,16 @@ } }, "browserslist": { - "version": "4.14.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", - "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001135", - "electron-to-chromium": "^1.3.571", - "escalade": "^3.1.0", - "node-releases": "^1.1.61" + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" } }, "bser": { @@ -19796,9 +21307,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001140", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001140.tgz", - "integrity": "sha512-xFtvBtfGrpjTOxTpjP5F2LmN04/ZGfYV8EQzUIC/RmKpdrmzJrjqlJ4ho7sGuAMPko2/Jl08h7x9uObCfBFaAA==", + "version": "1.0.30001237", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz", + "integrity": "sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw==", "dev": true }, "capture-exit": { @@ -20048,6 +21559,12 @@ "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -20204,18 +21721,18 @@ "dev": true }, "core-js-bundle": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.6.5.tgz", - "integrity": "sha512-awf49McIBT3sDXceSex69w/i7PMXQwxI4ZqknCtaYbW4Q0u0HUZiaQLlPD6pU2nFBofIowgWIS1ANgHjqnQu4Q==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.14.0.tgz", + "integrity": "sha512-448lTYr97FQDgccrIo+uC7pDTiM0xuG8pmSMrRM0dV+EDhbiw2Sw4aOYAgMNGbUvY+rA+QB5DIxlnxfRW+mKvw==", "dev": true }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.14.0.tgz", + "integrity": "sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A==", "dev": true, "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "dependencies": { @@ -20357,9 +21874,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -20405,15 +21922,27 @@ } }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "dependencies": { + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + } } }, "css-select-base-adapter": { @@ -20451,9 +21980,9 @@ } }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "dev": true }, "cssesc": { @@ -20475,9 +22004,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -20541,9 +22070,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -20590,9 +22119,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -20975,9 +22504,9 @@ "dev": true }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dev": true, "requires": { "ip": "^1.1.0", @@ -21051,22 +22580,50 @@ } }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } } }, "dot-prop": { @@ -21107,9 +22664,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.576", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.576.tgz", - "integrity": "sha512-uSEI0XZ//5ic+0NdOqlxp0liCD44ck20OAGyLMSymIWTEAtHKVJi6JM18acOnRgUgX7Q65QqnI+sNncNvIy8ew==", + "version": "1.3.752", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz", + "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==", "dev": true }, "elliptic": { @@ -21163,9 +22720,9 @@ } }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -21278,9 +22835,9 @@ } }, "escalade": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz", - "integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-html": { @@ -21318,29 +22875,31 @@ } }, "eslint": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", - "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", "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.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -21348,7 +22907,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -21357,7 +22916,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -21422,22 +22981,28 @@ "ms": "2.1.2" } }, + "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 + }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "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": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -21446,12 +23011,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "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 - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -21744,9 +23303,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "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" @@ -21808,9 +23367,9 @@ "dev": true }, "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "requires": { "original": "^1.0.0" @@ -22079,9 +23638,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -22111,9 +23670,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "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" @@ -22126,13 +23685,13 @@ "dev": true }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" } }, "to-regex-range": { @@ -22165,18 +23724,18 @@ "dev": true }, "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "requires": { "reusify": "^1.0.4" } }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -22198,9 +23757,9 @@ "dev": true }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "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" @@ -22328,9 +23887,9 @@ } }, "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "flow-bin": { @@ -22374,9 +23933,9 @@ "dev": true }, "fork-ts-checker-webpack-plugin": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.0.8.tgz", - "integrity": "sha512-2K6Ozamm6TSL5heFIwPhX5+VsOBiiKf9PzaPFS7kwzrILKX+jlN3DBQc5v/6YYZ2oKJyImg3bY0/uZc7cDbDYQ==", + "version": "6.2.10", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.10.tgz", + "integrity": "sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", @@ -22386,6 +23945,7 @@ "cosmiconfig": "^6.0.0", "deepmerge": "^4.2.2", "fs-extra": "^9.0.0", + "glob": "^7.1.6", "memfs": "^3.1.2", "minimatch": "^3.0.4", "schema-utils": "2.7.0", @@ -22510,9 +24070,9 @@ "optional": true }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "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" @@ -22805,9 +24365,9 @@ } }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { @@ -22934,9 +24494,9 @@ "dev": true }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -22947,6 +24507,12 @@ "slash": "^3.0.0" }, "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -23291,35 +24857,22 @@ } }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } } } }, @@ -23350,6 +24903,12 @@ } } }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -23427,9 +24986,9 @@ "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "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": { @@ -24180,9 +25739,9 @@ } }, "jest-localstorage-mock": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/jest-localstorage-mock/-/jest-localstorage-mock-2.4.3.tgz", - "integrity": "sha512-UgifkHKoWVRUoSqO4Z4Z+Hl1NbiYBVDlmkmulFFeRRneGECWAlAdGWJdyz+2NisjOZnnQoxQl0s5dQ7ch62Jxw==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/jest-localstorage-mock/-/jest-localstorage-mock-2.4.14.tgz", + "integrity": "sha512-B+Y0y3J4wBOHdmcFSicWmVYMFAZFbJvjs1EfRIzUJRg2UAK+YVVUgTn7/MdjENey5xbBKmraBmKY5EX+x1NJXA==", "dev": true }, "jest-matcher-utils": { @@ -24645,15 +26204,6 @@ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -24734,18 +26284,42 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "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", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "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.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "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 + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -25365,9 +26939,9 @@ } }, "node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", "dev": true }, "node-sass": { @@ -25963,9 +27537,9 @@ "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "pidtree": { @@ -26084,9 +27658,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26131,9 +27705,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26169,9 +27743,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26206,9 +27780,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26243,9 +27817,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26280,9 +27854,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26317,9 +27891,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26357,9 +27931,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26399,9 +27973,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26448,9 +28022,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26488,9 +28062,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26530,9 +28104,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26570,9 +28144,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26657,9 +28231,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26696,9 +28270,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26736,9 +28310,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26776,9 +28350,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26815,9 +28389,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26854,9 +28428,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26893,9 +28467,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26933,9 +28507,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -26971,9 +28545,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -27010,9 +28584,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -27050,9 +28624,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -27090,9 +28664,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -27141,9 +28715,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -27180,9 +28754,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -27408,6 +28982,12 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -27575,9 +29155,9 @@ } }, "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -27650,9 +29230,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -27679,16 +29259,16 @@ "dev": true }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dev": true, "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" } }, "repeat-element": { @@ -27766,6 +29346,12 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "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 + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -27895,10 +29481,13 @@ "dev": true }, "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } }, "run-queue": { "version": "1.0.3", @@ -28403,52 +29992,43 @@ } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dev": true, "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -28783,9 +30363,9 @@ "dev": true }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "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", @@ -28911,9 +30491,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -29016,15 +30596,52 @@ "dev": true }, "table": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", - "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "requires": { - "ajv": "^6.12.4", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, "tapable": { @@ -29296,9 +30913,9 @@ "dev": true }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -29335,9 +30952,9 @@ } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "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 }, "type-is": { @@ -29357,9 +30974,9 @@ "dev": true }, "typescript": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", - "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", + "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", "dev": true }, "typeson": { @@ -29721,15 +31338,15 @@ } }, "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" }, "dependencies": { "anymatch": { @@ -29795,9 +31412,9 @@ "optional": true }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "optional": true, "requires": { @@ -29844,9 +31461,9 @@ } }, "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "requires": { @@ -29869,9 +31486,9 @@ "dev": true }, "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -29882,7 +31499,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -29980,9 +31597,9 @@ } }, "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -30005,11 +31622,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -30068,9 +31685,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -30107,11 +31724,13 @@ } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -30309,9 +31928,9 @@ } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "dev": true, "requires": { "async-limiter": "~1.0.0" diff --git a/package.json b/package.json index b0b9d51..aeeb215 100644 --- a/package.json +++ b/package.json @@ -24,26 +24,25 @@ "author": "Adjust GmbH", "license": "MIT", "devDependencies": { - "@babel/cli": "^7.11.6", - "@babel/core": "^7.11.6", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-transform-flow-comments": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.11.5", - "@babel/preset-env": "^7.11.5", - "@babel/preset-flow": "^7.10.4", - "@babel/preset-typescript": "^7.10.4", - "@types/jest": "^26.0.23", - "@typescript-eslint/eslint-plugin": "^4.9.0", - "@typescript-eslint/parser": "^4.9.0", + "@babel/cli": "^7.12.13", + "@babel/core": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-transform-flow-comments": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.13", + "@babel/preset-env": "^7.12.13", + "@babel/preset-flow": "^7.12.13", + "@babel/preset-typescript": "^7.12.13", + "@typescript-eslint/eslint-plugin": "^4.14.2", + "@typescript-eslint/parser": "^4.14.2", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", - "babel-loader": "^8.0.6", + "babel-loader": "^8.2.2", "babel-plugin-es6-promise": "^1.1.1", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "core-js-bundle": "^3.6.5", + "core-js-bundle": "^3.8.3", "css-loader": "^1.0.1", "es6-promise": "^4.2.8", - "eslint": "^7.14.0", + "eslint": "^7.19.0", "eslint-loader": "^4.0.2", "eslint-plugin-flowtype": "^5.2.0", "eslint-plugin-jest": "^24.3.6", @@ -51,11 +50,11 @@ "file-loader": "^2.0.0", "flow-bin": "^0.106.3", "flow-webpack-plugin": "^1.2.0", - "fork-ts-checker-webpack-plugin": "^6.0.4", + "fork-ts-checker-webpack-plugin": "^6.1.0", "html-loader": "^0.5.5", "html-webpack-plugin": "^3.2.0", "jest": "^24.9.0", - "jest-localstorage-mock": "^2.4.0", + "jest-localstorage-mock": "^2.4.6", "mini-css-extract-plugin": "^0.4.5", "node-sass": "^4.14.1", "npm-run-all": "^4.1.5", @@ -65,13 +64,13 @@ "style-loader": "^0.23.1", "terser": "^3.17.0", "terser-webpack-plugin": "^1.4.1", - "typescript": "^4.0.3", - "webpack": "^4.39.3", + "typescript": "^4.1.3", + "webpack": "^4.46.0", "webpack-cli": "^3.3.7", - "webpack-dev-server": "^3.11.0" + "webpack-dev-server": "^3.11.2" }, "dependencies": { - "@babel/runtime": "^7.11.2" + "@babel/runtime": "^7.12.13" }, "directories": { "doc": "docs" diff --git a/src/global.d.ts b/src/global.d.ts index db0493e..6cce345 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -9,6 +9,14 @@ interface Window { msIndexedDB: Maybe } +interface IDBError extends Event { + target: any +} + +interface IDBRequest { + onerror: ((this: IDBRequest, ev: IDBError) => any) | null; +} + interface IDBVersionChangeEventTarget extends EventTarget { result: IDBDatabase transaction: IDBTransaction @@ -26,7 +34,7 @@ interface IDBOpenDBEvent extends Event { target: IDBOpenDBEventTarget } -interface IDBOpenDBRequest { +interface IDBOpenDBRequest extends IDBRequest { onsuccess: ((this: IDBOpenDBRequest, ev: IDBOpenDBEvent) => any) | null; } diff --git a/src/sdk/__tests__/storage/converter.spec.js b/src/sdk/__tests__/storage/converter.spec.js index 8a8d51d..2a5bfeb 100644 --- a/src/sdk/__tests__/storage/converter.spec.js +++ b/src/sdk/__tests__/storage/converter.spec.js @@ -20,24 +20,24 @@ describe('test Converter utility', () => { it('encodes and decodes primaries values', () => { - expect(Converter.convertValues({storeName: 'queue', dir: 'left', target: 123})).toEqual(123) - expect(Converter.convertValues({storeName: 'activityState', dir: 'left', target: 'abc123'})).toEqual('abc123') - expect(Converter.convertValues({storeName: 'globalParams', dir: 'left', target: [123, 'callback']})).toEqual([123, 1]) - expect(Converter.convertValues({storeName: 'globalParams', dir: 'left', target: [123, 'partner']})).toEqual([123, 2]) + expect(Converter.convertValues('queue', 'left', 123)).toEqual(123) + expect(Converter.convertValues('activityState', 'left', 'abc123')).toEqual('abc123') + expect(Converter.convertValues('globalParams', 'left', [123, 'callback'])).toEqual([123, 1]) + expect(Converter.convertValues('globalParams', 'left', [123, 'partner'])).toEqual([123, 2]) - expect(Converter.convertValues({storeName: 'queue', dir: 'right', target: 123})).toEqual(123) - expect(Converter.convertValues({storeName: 'activityState', dir: 'right', target: 'abc123'})).toEqual('abc123') - expect(Converter.convertValues({storeName: 'globalParams', dir: 'right', target: [123, 1]})).toEqual([123, 'callback']) - expect(Converter.convertValues({storeName: 'globalParams', dir: 'right', target: [123, 2]})).toEqual([123, 'partner']) + expect(Converter.convertValues('queue', 'right', 123)).toEqual(123) + expect(Converter.convertValues('activityState', 'right', 'abc123')).toEqual('abc123') + expect(Converter.convertValues('globalParams', 'right', [123, 1])).toEqual([123, 'callback']) + expect(Converter.convertValues('globalParams', 'right', [123, 2])).toEqual([123, 'partner']) }) it('encodes and decodes queue record', () => { - expect(Converter.convertRecord({ - storeName: 'queue', - dir: 'left', - record: { + expect(Converter.convertRecord( + 'queue', + 'left', + { url: '/session', timestamp: 123456, createdAt: 123456, @@ -47,12 +47,12 @@ describe('test Converter utility', () => { sessionCount: 3, eventCount: 3, lastInterval: 10, - callbackParams: {key1: 'value1'}, - partnerParams: {key2: 'value2', key3: 'value3'}, + callbackParams: { key1: 'value1' }, + partnerParams: { key2: 'value2', key3: 'value3' }, somethingDynamic: 'bla' } } - })).toEqual({ + )).toEqual({ u: 1, t: 123456, ca: 123456, @@ -62,16 +62,16 @@ describe('test Converter utility', () => { sc: 3, ec: 3, li: 10, - cp: {key1: 'value1'}, - pp: {key2: 'value2', key3: 'value3'}, + cp: { key1: 'value1' }, + pp: { key2: 'value2', key3: 'value3' }, somethingDynamic: 'bla' } }) - expect(Converter.convertRecord({ - storeName: 'queue', - dir: 'left', - record: { + expect(Converter.convertRecord( + 'queue', + 'left', + { url: '/session', timestamp: 123456, params: { @@ -80,12 +80,12 @@ describe('test Converter utility', () => { sessionCount: 3, eventCount: 3, lastInterval: 10, - callbackParams: {key1: 'value1'}, - partnerParams: {key2: 'value2', key3: 'value3'}, + callbackParams: { key1: 'value1' }, + partnerParams: { key2: 'value2', key3: 'value3' }, somethingDynamic: 'bla' } } - })).toEqual({ + )).toEqual({ u: 1, t: 123456, p: { @@ -94,16 +94,16 @@ describe('test Converter utility', () => { sc: 3, ec: 3, li: 10, - cp: {key1: 'value1'}, - pp: {key2: 'value2', key3: 'value3'}, + cp: { key1: 'value1' }, + pp: { key2: 'value2', key3: 'value3' }, somethingDynamic: 'bla' } }) - expect(Converter.convertRecord({ - storeName: 'queue', - dir: 'right', - record: { + expect(Converter.convertRecord( + 'queue', + 'right', + { u: 3, t: 6543321, m: 2, @@ -114,10 +114,10 @@ describe('test Converter utility', () => { sc: 5, ec: 4, li: 34, - pp: {key: 'value'} + pp: { key: 'value' } } } - })).toEqual({ + )).toEqual({ url: '/gdpr_forget_device', timestamp: 6543321, method: 'POST', @@ -128,17 +128,17 @@ describe('test Converter utility', () => { sessionCount: 5, eventCount: 4, lastInterval: 34, - partnerParams: {key: 'value'} + partnerParams: { key: 'value' } } }) }) it('encodes and decodes activityState record', () => { - expect(Converter.convertRecord({ - storeName: 'activityState', - dir: 'left', - record: { + expect(Converter.convertRecord( + 'activityState', + 'left', + { uuid: '123abc', timeSpent: 10, sessionLength: 20, @@ -158,7 +158,7 @@ describe('test Converter utility', () => { state: 'installed' } } - })).toEqual({ + )).toEqual({ u: '123abc', ts: 10, sl: 20, @@ -179,10 +179,10 @@ describe('test Converter utility', () => { } }) - expect(Converter.convertRecord({ - storeName: 'activityState', - dir: 'right', - record: { + expect(Converter.convertRecord( + 'activityState', + 'right', + { u: '123abc', ts: 1, sl: 5, @@ -198,7 +198,7 @@ describe('test Converter utility', () => { st: 2 } } - })).toEqual({ + )).toEqual({ uuid: '123abc', timeSpent: 1, sessionLength: 5, @@ -217,29 +217,25 @@ describe('test Converter utility', () => { }) it('encodes and decodes globalParams record', () => { - expect(Converter.convertRecord({ - storeName: 'globalParams', - dir: 'left', - record: { - key: 'key1', - value: 'value1', - type: 'callback' - } + expect(Converter.convertRecord('globalParams', 'left', { + key: 'key1', + value: 'value1', + type: 'callback' })).toEqual({ k: 'key1', v: 'value1', t: 1 }) - expect(Converter.convertRecord({ - storeName: 'globalParams', - dir: 'right', - record: { + expect(Converter.convertRecord( + 'globalParams', + 'right', + { k: 'key2', v: 'value2', t: 2 } - })).toEqual({ + )).toEqual({ key: 'key2', value: 'value2', type: 'partner' @@ -249,132 +245,132 @@ describe('test Converter utility', () => { it('encodes and decodes multiple records', () => { - expect(Converter.convertRecords({ - storeName: 'globalParams', - dir: 'left', - records: [ - {key: 'key1', value: 'value1', type: 'callback'}, - {key: 'key2', value: 'value2', type: 'callback'}, - {key: 'key3', value: 'value3', type: 'partner'} + expect(Converter.convertRecords( + 'globalParams', + 'left', + [ + { key: 'key1', value: 'value1', type: 'callback' }, + { key: 'key2', value: 'value2', type: 'callback' }, + { key: 'key3', value: 'value3', type: 'partner' } ] - })).toEqual([ - {k: 'key1', v: 'value1', t: 1}, - {k: 'key2', v: 'value2', t: 1}, - {k: 'key3', v: 'value3', t: 2} + )).toEqual([ + { k: 'key1', v: 'value1', t: 1 }, + { k: 'key2', v: 'value2', t: 1 }, + { k: 'key3', v: 'value3', t: 2 } ]) - expect(Converter.convertRecords({ - storeName: 'globalParams', - dir: 'right', - records: [ - {k: 'key1', v: 'value1', t: 2}, - {k: 'key2', v: 'value2', t: 1}, - {k: 'key3', v: 'value3', t: 2}, - {k: 'key4', v: 'value4', t: 2} + expect(Converter.convertRecords( + 'globalParams', + 'right', + [ + { k: 'key1', v: 'value1', t: 2 }, + { k: 'key2', v: 'value2', t: 1 }, + { k: 'key3', v: 'value3', t: 2 }, + { k: 'key4', v: 'value4', t: 2 } ] - })).toEqual([ - {key: 'key1', value: 'value1', type: 'partner'}, - {key: 'key2', value: 'value2', type: 'callback'}, - {key: 'key3', value: 'value3', type: 'partner'}, - {key: 'key4', value: 'value4', type: 'partner'} + )).toEqual([ + { key: 'key1', value: 'value1', type: 'partner' }, + { key: 'key2', value: 'value2', type: 'callback' }, + { key: 'key3', value: 'value3', type: 'partner' }, + { key: 'key4', value: 'value4', type: 'partner' } ]) - expect(Converter.convertRecords({ - storeName: 'queue', - dir: 'left', - records: [ - {url: '/session', method: 'POST', timestamp: 123456, createdAt: 123456, params: {timeSpent: 10, sessionLength: 12, sessionCount: 9, eventCount: 10, lastInterval: 10}}, - {url: '/event', method: 'POST', timestamp: 28374628, params: {timeSpent: 4, sessionLength: 4, sessionCount: 9, eventCount: 11, lastInterval: 4, eventToken: '123abc'}}, - {url: '/event', method: 'POST', timestamp: 28374628, params: {timeSpent: 5, sessionLength: 6, sessionCount: 9, eventCount: 12, lastInterval: 5, eventToken: 'abc123', revenue: 100}}, - {url: '/url', method: 'DELETE', timestamp: 123746, params: {custom: 'param'}} + expect(Converter.convertRecords( + 'queue', + 'left', + [ + { url: '/session', method: 'POST', timestamp: 123456, createdAt: 123456, params: { timeSpent: 10, sessionLength: 12, sessionCount: 9, eventCount: 10, lastInterval: 10 } }, + { url: '/event', method: 'POST', timestamp: 28374628, params: { timeSpent: 4, sessionLength: 4, sessionCount: 9, eventCount: 11, lastInterval: 4, eventToken: '123abc' } }, + { url: '/event', method: 'POST', timestamp: 28374628, params: { timeSpent: 5, sessionLength: 6, sessionCount: 9, eventCount: 12, lastInterval: 5, eventToken: 'abc123', revenue: 100 } }, + { url: '/url', method: 'DELETE', timestamp: 123746, params: { custom: 'param' } } ] - })).toEqual([ - {u: 1, m: 2, t: 123456, ca: 123456, p: {ts: 10, sl: 12, sc: 9, ec: 10, li: 10}}, - {u: 2, m: 2, t: 28374628, p: {ts: 4, sl: 4, sc: 9, ec: 11, li: 4, et: '123abc'}}, - {u: 2, m: 2, t: 28374628, p: {ts: 5, sl: 6, sc: 9, ec: 12, li: 5, et: 'abc123', re: 100}}, - {u: '/url', m: 4, t: 123746, p: {custom: 'param'}} + )).toEqual([ + { u: 1, m: 2, t: 123456, ca: 123456, p: { ts: 10, sl: 12, sc: 9, ec: 10, li: 10 } }, + { u: 2, m: 2, t: 28374628, p: { ts: 4, sl: 4, sc: 9, ec: 11, li: 4, et: '123abc' } }, + { u: 2, m: 2, t: 28374628, p: { ts: 5, sl: 6, sc: 9, ec: 12, li: 5, et: 'abc123', re: 100 } }, + { u: '/url', m: 4, t: 123746, p: { custom: 'param' } } ]) - expect(Converter.convertRecords({ - storeName: 'queue', - dir: 'right', - records: [ - {u: 1, t: 12412, p: {ts: 10, sl: 12, sc: 9, ec: 10, li: 10}}, - {u: 2, m: 2, t: 12312, ca: 12312, p: {ts: 4, sl: 4, sc: 9, ec: 11, li: 4, et: '123abc'}}, - {u: 3, m: 3, t: 3423452, ca: 3423452, p: {ts: 5, sl: 6, sc: 9, ec: 12, li: 5}}, - {u: '/some-other-url', m: 1, t: 123746, p: {other: 'param'}} + expect(Converter.convertRecords( + 'queue', + 'right', + [ + { u: 1, t: 12412, p: { ts: 10, sl: 12, sc: 9, ec: 10, li: 10 } }, + { u: 2, m: 2, t: 12312, ca: 12312, p: { ts: 4, sl: 4, sc: 9, ec: 11, li: 4, et: '123abc' } }, + { u: 3, m: 3, t: 3423452, ca: 3423452, p: { ts: 5, sl: 6, sc: 9, ec: 12, li: 5 } }, + { u: '/some-other-url', m: 1, t: 123746, p: { other: 'param' } } ] - })).toEqual([ - {url: '/session', timestamp: 12412, params: {timeSpent: 10, sessionLength: 12, sessionCount: 9, eventCount: 10, lastInterval: 10}}, - {url: '/event', method: 'POST', timestamp: 12312, createdAt: 12312, params: {timeSpent: 4, sessionLength: 4, sessionCount: 9, eventCount: 11, lastInterval: 4, eventToken: '123abc'}}, - {url: '/gdpr_forget_device', method: 'PUT', timestamp: 3423452, createdAt: 3423452, params: {timeSpent: 5, sessionLength: 6, sessionCount: 9, eventCount: 12, lastInterval: 5}}, - {url: '/some-other-url', method: 'GET', timestamp: 123746, params: {other: 'param'}} + )).toEqual([ + { url: '/session', timestamp: 12412, params: { timeSpent: 10, sessionLength: 12, sessionCount: 9, eventCount: 10, lastInterval: 10 } }, + { url: '/event', method: 'POST', timestamp: 12312, createdAt: 12312, params: { timeSpent: 4, sessionLength: 4, sessionCount: 9, eventCount: 11, lastInterval: 4, eventToken: '123abc' } }, + { url: '/gdpr_forget_device', method: 'PUT', timestamp: 3423452, createdAt: 3423452, params: { timeSpent: 5, sessionLength: 6, sessionCount: 9, eventCount: 12, lastInterval: 5 } }, + { url: '/some-other-url', method: 'GET', timestamp: 123746, params: { other: 'param' } } ]) }) it('encodes and decodes eventDeduplication record', () => { - expect(Converter.convertRecord({ - storeName: 'eventDeduplication', - dir: 'left', - record: {internalId: 1, id: 'id1'} - })).toEqual({ii: 1, i: 'id1'}) - - expect(Converter.convertRecord({ - storeName: 'eventDeduplication', - dir: 'right', - record: {ii: 2, i: 'id2'} - })).toEqual({internalId: 2, id: 'id2'}) + expect(Converter.convertRecord( + 'eventDeduplication', + 'left', + { internalId: 1, id: 'id1' } + )).toEqual({ ii: 1, i: 'id1' }) + + expect(Converter.convertRecord( + 'eventDeduplication', + 'right', + { ii: 2, i: 'id2' } + )).toEqual({ internalId: 2, id: 'id2' }) }) it('encodes and decodes preferences record', () => { - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'left', - record: {sdkDisabled: {reason: 'general', pending: false}} - })).toEqual({sd: {r: 1, p: 0}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'left', - record: {sdkDisabled: {reason: 'gdpr', pending: false}} - })).toEqual({sd: {r: 2, p: 0}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'left', - record: {sdkDisabled: {reason: 'gdpr', pending: true}} - })).toEqual({sd: {r: 2, p: 1}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'left', - record: {sdkDisabled: {reason: 'gdpr'}} - })).toEqual({sd: {r: 2}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'right', - record: {sd: {r: 1, p: 0}} - })).toEqual({sdkDisabled: {reason: 'general', pending: false}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'right', - record: {sd: {r: 2, p: 0}} - })).toEqual({sdkDisabled: {reason: 'gdpr', pending: false}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'right', - record: {sd: {r: 2, p: 1}} - })).toEqual({sdkDisabled: {reason: 'gdpr', pending: true}}) - - expect(Converter.convertRecord({ - storeName: 'preferences', - dir: 'right', - record: {sd: {r: 2}} - })).toEqual({sdkDisabled: {reason: 'gdpr'}}) + expect(Converter.convertRecord( + 'preferences', + 'left', + { sdkDisabled: { reason: 'general', pending: false } } + )).toEqual({ sd: { r: 1, p: 0 } }) + + expect(Converter.convertRecord( + 'preferences', + 'left', + { sdkDisabled: { reason: 'gdpr', pending: false } } + )).toEqual({ sd: { r: 2, p: 0 } }) + + expect(Converter.convertRecord( + 'preferences', + 'left', + { sdkDisabled: { reason: 'gdpr', pending: true } } + )).toEqual({ sd: { r: 2, p: 1 } }) + + expect(Converter.convertRecord( + 'preferences', + 'left', + { sdkDisabled: { reason: 'gdpr' } } + )).toEqual({ sd: { r: 2 } }) + + expect(Converter.convertRecord( + 'preferences', + 'right', + { sd: { r: 1, p: 0 } } + )).toEqual({ sdkDisabled: { reason: 'general', pending: false } }) + + expect(Converter.convertRecord( + 'preferences', + 'right', + { sd: { r: 2, p: 0 } } + )).toEqual({ sdkDisabled: { reason: 'gdpr', pending: false } }) + + expect(Converter.convertRecord( + 'preferences', + 'right', + { sd: { r: 2, p: 1 } } + )).toEqual({ sdkDisabled: { reason: 'gdpr', pending: true } }) + + expect(Converter.convertRecord( + 'preferences', + 'right', + { sd: { r: 2 } } + )).toEqual({ sdkDisabled: { reason: 'gdpr' } }) }) }) @@ -403,36 +399,35 @@ describe('test Converter utility', () => { } } - jest.doMock('../../storage/scheme', () => ({ - someStore: someStoreScheme - })) + const Scheme = require('../../storage/scheme') + Scheme.default = { someStore: someStoreScheme } const Converter = require('../../storage/converter') it('encodes and decodes someStore record', () => { - expect(Converter.convertRecord({ - storeName: 'someStore', - dir: 'left', - record: { + expect(Converter.convertRecord( + 'someStore', + 'left', + { id: 123, name: 'pljas', surname: 'bla' } - })).toEqual({ + )).toEqual({ id: 123, n: 'pljas', s: 'b' }) - expect(Converter.convertRecord({ - storeName: 'someStore', - dir: 'right', - record: { + expect(Converter.convertRecord( + 'someStore', + 'right', + { id: 456, n: 'some-name', s: 'some-surname' } - })).toEqual({ + )).toEqual({ id: 456, name: 'some-name', surname: 'some-surname' diff --git a/src/sdk/storage/converter.ts b/src/sdk/storage/converter.ts index e7dbeb4..968706e 100644 --- a/src/sdk/storage/converter.ts +++ b/src/sdk/storage/converter.ts @@ -1,99 +1,104 @@ +import { entries } from '../utilities' +import { + isComplexStoreField, + isCompositeKeyStoreField, + isNestingStoreField, + isPredefinedValuesField, + StoreFields, + StoreFieldScheme, + StoreNames, + ShortStoreNames, + StoreOptions, +} from './scheme' import SchemeMap from './scheme-map' -import { isObject, entries } from '../utilities' -import { Error } from './types' +import { Error, StoredRecord, StoredRecordId, StoredValue, valueIsRecord } from './types' enum Direction { right = 'right', left = 'left' } -interface StoreConverterParameters { - storeName: string; - dir: Direction; -} - -interface ConverterParameters extends StoreConverterParameters { - scheme?: any; -} - -interface RecordConverterParameters extends ConverterParameters { - record: any; -} - -interface KeyValueConverterParameters extends ConverterParameters { - key: string; - value: any; -} - -interface RecordsConverterParameters extends StoreConverterParameters { - records: Array; -} - -interface TargetConverterParameters extends StoreConverterParameters { - target: any; -} +type StoreNameType = StoreNames | ShortStoreNames /** * Get value from the map if available - * - * @private */ -function _getValue(map, value) { +function _getValue(map: Nullable>, value: StoredValue): StoredValue { return map ? (map[value] !== undefined ? map[value] : value) : value } /** * Convert key and value by defined scheme - * - * @private */ -function _convert({ storeName, scheme, dir, key, value }: KeyValueConverterParameters): [string, any] { +function _convert(storeName: StoreNameType, dir: Direction, key: string, value: StoredValue | StoredRecord, scheme?: StoreFieldScheme): [string, unknown] { if (!scheme) { return [key, value] } - const encodedKey = scheme.key || scheme + const encodedKey = isComplexStoreField(scheme) ? scheme.key : scheme - if (isObject(value)) { - return [encodedKey, convertRecord({ storeName, dir, record: value, scheme: scheme.keys })] + if (valueIsRecord(value)) { + const keys = isNestingStoreField(scheme) ? scheme.keys : null + return [ + encodedKey, + convertRecord(storeName, dir, value, keys) + ] } - return [encodedKey, _getValue(scheme.values, value)] + const valuesMap = isPredefinedValuesField(scheme) ? scheme.values : null + return [encodedKey, _getValue(valuesMap, value)] } /** * Convert record by defined direction and scheme */ -function convertRecord({ storeName, dir, record, scheme }: RecordConverterParameters) { +function convertRecord(storeName: StoreNameType, dir: Direction, record: StoredRecord, scheme?: Nullable): StoredRecord + +/** + * Convert record by defined direction and scheme + */ +function convertRecord(storeName: StoreNameType, dir: Direction, record: Maybe, scheme?: StoreFields): Maybe + +/** + * Convert record by defined direction and scheme + * Note: the function signature is duplicated because TS hides function implementation + */ +function convertRecord(storeName: StoreNameType, dir: Direction, record: Maybe, scheme?: StoreFields): Maybe { if (!record) { - return + return undefined } - scheme = scheme || SchemeMap[dir][convertStoreName({ storeName, dir: Direction.right })].fields + const _scheme: StoreFields = scheme || SchemeMap[dir][convertStoreName(storeName, Direction.right)].fields return entries(record) - .map(([key, value]) => _convert({ storeName, scheme: scheme[key], dir, key, value })) + .map(([key, value]) => _convert(storeName, dir, key, value, _scheme[key])) .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}) } /** * Convert records by defined direction */ -function convertRecords({ storeName, dir, records = [] }: RecordsConverterParameters): Array<{ [key: string]: any }> { +function convertRecords(storeName: StoreNameType, dir: Direction, records: Array = []): Array { return records - .map(record => convertRecord({ storeName, dir, record })) + .map(record => convertRecord(storeName, dir, record)) } /** * Convert values by defined direction */ -function convertValues({ storeName, dir, target }: TargetConverterParameters) { - const scheme = SchemeMap[dir][convertStoreName({ storeName, dir: Direction.right })] +function convertValues(storeName: StoreNameType, dir: Direction, target: StoredRecordId): StoredValue | Array { + const scheme: StoreOptions = SchemeMap[dir][convertStoreName(storeName, Direction.right)] const keyPathScheme = scheme.fields[scheme.keyPath] + const values = target instanceof Array ? target.slice() : [target] - const keys = keyPathScheme.composite || [scheme.keyPath] + const keys = isCompositeKeyStoreField(keyPathScheme) ? keyPathScheme.composite : [scheme.keyPath] + const converted = keys - .map((key, index) => _getValue(scheme.fields[key].values, values[index])) + .map((key: string, index: number) => { + const field = scheme.fields[key] + const predefinedValuesMap = isPredefinedValuesField(field) ? field.values : null + return _getValue(predefinedValuesMap, values[index]) + }) return converted.length === 1 ? converted[0] : converted } @@ -101,24 +106,24 @@ function convertValues({ storeName, dir, target }: TargetConverterParameters) { /** * Encode value by defined scheme */ -function encodeValue(target: any) { +function encodeValue(target: StoredValue): StoredValue { return SchemeMap.values[target] || target } /** * Convert store name by defined direction */ -function convertStoreName({ storeName, dir }: StoreConverterParameters): string { +function convertStoreName(storeName: StoreNameType, dir: Direction): StoreNameType { return (SchemeMap.storeNames[dir][storeName] || {}).name || storeName } /** * Decode error message by replacing short store name with long readable one */ -function decodeErrorMessage({ storeName, error }: { storeName: string; error: Error }): Error { +function decodeErrorMessage(storeName: ShortStoreNames, error: Error): Error { return { name: error.name, - message: error.message.replace(`"${storeName}"`, convertStoreName({ storeName, dir: Direction.right })) + message: error.message.replace(`"${storeName}"`, convertStoreName(storeName, Direction.right)) } } diff --git a/src/sdk/storage/indexeddb.ts b/src/sdk/storage/indexeddb.ts index 91e6777..ae9545e 100644 --- a/src/sdk/storage/indexeddb.ts +++ b/src/sdk/storage/indexeddb.ts @@ -1,12 +1,13 @@ -import Globals from '../globals' -import SchemeMap from './scheme-map' import ActivityState from '../activity-state' -import QuickStorage from './quick-storage' +import Globals from '../globals' import Logger from '../logger' import { recover as recoverPreferences } from '../preferences' -import { isEmpty, isObject, entries, values } from '../utilities' +import QuickStorage from '../storage/quick-storage' +import { entries, values, isEmpty, isObject } from '../utilities' import { Direction, convertRecord, convertStoreName } from './converter' -import { IStorage } from './types' +import { isCompositeKeyStoreField, ShortStoreName, ShortStoreNames, StoreOptions } from './scheme' +import SchemeMap from './scheme-map' +import { IStorage, KeyRangeCondition, StoredRecord, StoredRecordId, StoredValue, Error } from './types' enum Action { add = 'add', @@ -17,20 +18,32 @@ enum Action { delete = 'delete', } -type Request = { - storeName: string; +enum AccessMode { + readonly = 'readonly', + readwrite = 'readwrite' +} + +interface CommonRequestParams { + storeName: ShortStoreName; action: Action; - target?: any; - mode?: IDBTransactionMode; - range?: Nullable; + mode?: AccessMode; firstOnly?: boolean; } -type Transaction = { +interface Request extends CommonRequestParams { + target?: Nullable; +} + +interface BulkRequest extends CommonRequestParams { + target?: Array; + range?: Nullable; +} + +interface Transaction { transaction: IDBTransaction; store: IDBObjectStore; - index: IDBIndex; - options: any; + index: Maybe; + options: StoreOptions; } class IndexedDBWrapper implements IStorage { @@ -85,7 +98,7 @@ class IndexedDBWrapper implements IStorage { if (IndexedDBWrapper.isSupportedPromise) { return IndexedDBWrapper.isSupportedPromise } else { - IndexedDBWrapper.isSupportedPromise = new Promise(resolve => { + IndexedDBWrapper.isSupportedPromise = new Promise((resolve) => { const indexedDB = IndexedDBWrapper.getIndexedDB() const iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform) @@ -147,7 +160,7 @@ class IndexedDBWrapper implements IStorage { * @param version optional version of database schema * @param upgradeCallback optional `IDBOpenRequest.onupgradeneeded` event handler */ - private openDatabase(name: string, version?: number, upgradeCallback?: (event: IDBVersionChangeEvent, reject: () => void) => void): Promise { + private openDatabase(name: string, upgradeCallback?: (event: IDBVersionChangeEvent, reject: () => void) => void, version?: number): Promise { return IndexedDBWrapper.isSupported() .then(supported => { @@ -184,7 +197,7 @@ class IndexedDBWrapper implements IStorage { return new Promise((resolve: (result: boolean) => void) => { let existed = true - this.openDatabase(name, undefined, () => { existed = false }) + this.openDatabase(name, () => { existed = false }) .then(connection => { connection.close() @@ -202,12 +215,12 @@ class IndexedDBWrapper implements IStorage { private cloneData(defaultDbConnection: IDBDatabase, customDbConnection: IDBDatabase): Promise { // Function to clone a single store - const cloneStore = (storeName: string) => { + const cloneStore = (storeName: ShortStoreName) => { const connection = this.indexedDbConnection this.indexedDbConnection = defaultDbConnection return this.getAll(storeName) // Get all records from default-named database - .then((records: Array) => { + .then(records => { this.indexedDbConnection = customDbConnection if (records.length < 1) { // There is no records in the store @@ -221,10 +234,15 @@ class IndexedDBWrapper implements IStorage { }) } + // Type guard to filter stores + function isStoreName(key: ShortStoreNames): key is ShortStoreName { + return key !== 'p' + } + // Get names of stores - const storeNames: string[] = values(SchemeMap.storeNames.left) - .filter(store => !store.permanent) + const storeNames: ShortStoreName[] = values(SchemeMap.storeNames.left) .map(store => store.name) + .filter(isStoreName) const cloneStorePromises = storeNames.map(name => () => cloneStore(name)) @@ -246,8 +264,8 @@ class IndexedDBWrapper implements IStorage { if (defaultExists) { // Migration hadn't finished yet return Promise.all([ - this.openDatabase(defaultName, this.dbVersion, this.handleUpgradeNeeded), // Open the default database, migrate version if needed - this.openDatabase(customName, this.dbVersion, this.handleUpgradeNeeded), // Open or create a new database, migrate version if needed + this.openDatabase(defaultName, this.handleUpgradeNeeded, this.dbVersion), // Open the default database, migrate version if needed + this.openDatabase(customName, this.handleUpgradeNeeded, this.dbVersion), // Open or create a new database, migrate version if needed ]) .then(([defaultDbConnection, customDbConnection]) => { return this.cloneData(defaultDbConnection, customDbConnection) @@ -262,7 +280,7 @@ class IndexedDBWrapper implements IStorage { } else { // There is no default-named database, let's just create or open a custom-named one - return this.openDatabase(customName, this.dbVersion, this.handleUpgradeNeeded) + return this.openDatabase(customName, this.handleUpgradeNeeded, this.dbVersion) .then(customDbConnection => { this.indexedDbConnection = customDbConnection }) } }) @@ -273,7 +291,7 @@ class IndexedDBWrapper implements IStorage { * - store activity state from memory if database unexpectedly got lost in the middle of the window session * - migrate data from localStorage if available on browser upgrade */ - private handleUpgradeNeeded(e: IDBVersionChangeEvent, reject: (reason: any) => void) { + private handleUpgradeNeeded(e: IDBVersionChangeEvent, reject: (reason: Event) => void) { const db = e.target.result e.target.transaction.onerror = reject @@ -286,8 +304,9 @@ class IndexedDBWrapper implements IStorage { entries(storeNames) .filter(([, store]) => !store.permanent) .forEach(([longStoreName, store]) => { + const shortStoreName = store.name const options = SchemeMap.right[longStoreName] - const objectStore = db.createObjectStore(store.name, { + const objectStore = db.createObjectStore(shortStoreName, { keyPath: options.keyPath, autoIncrement: options.autoIncrement || false }) @@ -296,17 +315,18 @@ class IndexedDBWrapper implements IStorage { objectStore.createIndex(`${options.index}Index`, options.index) } - if (store.name === storeNames.activityState.name && inMemoryAvailable) { - objectStore.add(convertRecord({ - storeName: longStoreName, - record: activityState, - dir: Direction.left - })) + if (shortStoreName === ShortStoreName.ActivityState && inMemoryAvailable) { + objectStore.add(convertRecord(longStoreName, Direction.left, activityState)) Logger.info('Activity state has been recovered') - } else if (QuickStorage.stores[store.name]) { - QuickStorage.stores[store.name].forEach(record => objectStore.add(record)) + return + } + + const localStorageRecord: Nullable> = QuickStorage.stores[shortStoreName] + if (localStorageRecord) { + localStorageRecord.forEach(record => objectStore.add(record)) Logger.info(`Migration from localStorage done for ${longStoreName} store`) } + }) recoverPreferences() @@ -321,7 +341,7 @@ class IndexedDBWrapper implements IStorage { return Promise.resolve({ success: true }) } - return this.openDatabase(this.dbName, this.dbVersion, this.handleUpgradeNeeded) + return this.openDatabase(this.dbName, this.handleUpgradeNeeded, this.dbVersion) .then(connection => { this.indexedDbConnection = connection this.indexedDbConnection.onclose = () => this.destroy @@ -332,10 +352,10 @@ class IndexedDBWrapper implements IStorage { /** * Get transaction and the store */ - private getTransactionStore({ storeName, mode }: { storeName: string, mode: IDBTransactionMode }, reject: (reason: any) => void, db: IDBDatabase): Transaction { + private getTransactionStore({ storeName, mode }: { storeName: ShortStoreName, mode: AccessMode }, reject: (reason: Event) => void, db: IDBDatabase): Transaction { const transaction: IDBTransaction = db.transaction([storeName], mode) const store = transaction.objectStore(storeName) - const options = SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })] + const options = SchemeMap.right[convertStoreName(storeName, Direction.right)] let index if (options.index) { @@ -351,7 +371,7 @@ class IndexedDBWrapper implements IStorage { /** * Override the error by extracting only name and message of the error */ - private overrideError(reject, error): Promise { + private overrideError(reject: (reason: Error) => void, error: IDBError) { const { name, message } = error.target.error return reject({ name, message }) } @@ -359,38 +379,60 @@ class IndexedDBWrapper implements IStorage { /** * Get list of composite keys if available */ - private getCompositeKeys(options): Nullable> { - return options.fields[options.keyPath].composite || null + private getCompositeKeys(options: StoreOptions): Nullable> { + const keyField = options.fields[options.keyPath] + return isCompositeKeyStoreField(keyField) ? keyField.composite : null + } + + /** + * Check if target is an object + */ + private targetIsObject(target: Nullable): target is Record { + return isObject(target) } /** * Prepare the target to be queried depending on the composite key if defined */ - private prepareTarget(options, target, action: Action) { - const addOrPut = [Action.add, Action.put].indexOf(action) !== -1 + private prepareTarget(options: StoreOptions, target: Nullable, action: Action): Nullable { + + if (action === Action.clear || !target) { + return null // No target needed when we clear the whole store + } + const composite = this.getCompositeKeys(options) + const needObjectTarget = [Action.add, Action.put].indexOf(action) !== -1 + + if (needObjectTarget) { + if (this.targetIsObject(target)) { // target is a StoredRecord + // extend target with composite path if needed and return it + return composite ? { [options.keyPath]: composite.map(key => target[key]).join(''), ...target } : target + } + + return null + } - return composite - ? addOrPut - ? { [options.keyPath]: composite.map(key => target[key]).join(''), ...target } - : target ? target.join('') : null - : target + // target is StoredRecordId (plain or composite) + return (target instanceof Array) ? target.join('') : target } /** * Prepare the result to be return depending on the composite key definition */ - private prepareResult(options, target) { + private prepareResult(options: StoreOptions, target: Nullable): Nullable> { const composite = this.getCompositeKeys(options) - return composite && isObject(target) - ? composite.map(key => target[key]) - : null + + if (composite && this.targetIsObject(target)) { + return composite.map(key => target[key]) + } + + return null } /** * Initiate the database request */ - private initRequest({ storeName, target = null, action, mode = 'readonly' as IDBTransactionMode }: Request): Promise { + private initRequest({ storeName, target = null, action, mode = AccessMode.readonly }: Request): Promise> { return this.open() .then(() => { return new Promise((resolve, reject) => { @@ -409,7 +451,7 @@ class IndexedDBWrapper implements IStorage { } } - request.onerror = error => this.overrideError(reject, error) + request.onerror = (error: Event) => this.overrideError(reject, error) } }) }) @@ -418,7 +460,7 @@ class IndexedDBWrapper implements IStorage { /** * Initiate bulk database request by reusing the same transaction to perform the operation */ - private initBulkRequest({ storeName, target, action, mode = 'readwrite' }: Request): Promise { + private initBulkRequest({ storeName, target, action, mode = AccessMode.readwrite }: BulkRequest): Promise> { if (!target || target && !target.length) { return Promise.reject({ name: 'NoTargetDefined', message: `No array provided to perform ${action} bulk operation into "${storeName}" store` }) } @@ -430,7 +472,9 @@ class IndexedDBWrapper implements IStorage { reject(this.noConnectionError) } else { const { transaction, store, options } = this.getTransactionStore({ storeName, mode }, reject, this.indexedDbConnection) - const result = new Array() + + // Array contains or StoredRecord either RecordIds, but not both at the same time + const result = new Array() let current = target[0] transaction.oncomplete = () => resolve(result) @@ -457,7 +501,7 @@ class IndexedDBWrapper implements IStorage { /** * Open cursor for bulk operations or listing */ - private openCursor({ storeName, action, range = null, firstOnly = false, mode = 'readonly' }: Request): Promise> { + private openCursor({ storeName, action, range = null, firstOnly = false, mode = AccessMode.readonly }: BulkRequest): Promise> { return this.open() .then(() => { return new Promise((resolve, reject) => { @@ -467,9 +511,9 @@ class IndexedDBWrapper implements IStorage { const { transaction, store, index, options } = this.getTransactionStore({ storeName, mode }, reject, this.indexedDbConnection) const cursorRequest: OpenIDBCursorRequest = (index || store).openCursor(range) - const items = new Array() + const items = new Array() - transaction.oncomplete = () => resolve(firstOnly ? items[0] : items) + transaction.oncomplete = () => resolve(items) cursorRequest.onsuccess = e => { const cursor = e.target.result @@ -494,12 +538,12 @@ class IndexedDBWrapper implements IStorage { }) } - private deleteDatabaseByName(dbName: string): Promise { + private deleteDatabaseByName(dbName: string): Promise { return new Promise((resolve, reject) => { const request = this.idbFactory.deleteDatabase(dbName) request.onerror = error => this.overrideError(reject, error) - request.onsuccess = resolve + request.onsuccess = () => resolve() request.onblocked = e => reject(e.target) }) } @@ -507,95 +551,109 @@ class IndexedDBWrapper implements IStorage { /** * Get all records from particular store */ - getAll(storeName: string, firstOnly = false): Promise> { - return this.openCursor({ storeName, action: Action.list, firstOnly }) + getAll(storeName: ShortStoreName, firstOnly = false): Promise> { + return this.openCursor({ storeName, action: Action.list, firstOnly }) as Promise> } /** * Get the first row from the store */ - getFirst(storeName: string): Promise { + getFirst(storeName: ShortStoreName): Promise> { return this.getAll(storeName, true) + .then(all => all.length ? all[0] : undefined) } /** * Get item from a particular store */ - getItem(storeName: string, target: any): Promise { - return this.initRequest({ storeName, target, action: Action.get }) + getItem(storeName: ShortStoreName, target: StoredRecordId): Promise { + return this.initRequest({ storeName, target, action: Action.get }) as Promise } /** * Return filtered result by value on available index */ - filterBy(storeName: string, by: string): Promise { - + filterBy(storeName: ShortStoreName, by: StoredValue): Promise> { const range = IDBKeyRange.only(by) - - return this.openCursor({ storeName, action: Action.list, range }) + return this.openCursor({ storeName, action: Action.list, range }) as Promise> } /** * Add item to a particular store */ - addItem(storeName: string, target): Promise { - return this.initRequest({ storeName, target, action: Action.add, mode: 'readwrite' }) + addItem(storeName: ShortStoreName, target: StoredRecord): Promise { + return this.initRequest({ storeName, target, action: Action.add, mode: AccessMode.readwrite }) as Promise } /** * Add multiple items into particular store */ - addBulk(storeName: string, target, overwrite: boolean): Promise { - return this.initBulkRequest({ storeName, target, action: (overwrite ? Action.put : Action.add), mode: 'readwrite' }) + addBulk(storeName: ShortStoreName, target: Array, overwrite: boolean): Promise> { + return this.initBulkRequest({ + storeName, + target, + action: (overwrite ? Action.put : Action.add), + mode: AccessMode.readwrite + }) as Promise> } /** * Update item in a particular store */ - updateItem(storeName: string, target): Promise { - return this.initRequest({ storeName, target, action: Action.put, mode: 'readwrite' }) + updateItem(storeName: ShortStoreName, target: StoredRecord): Promise { + return this.initRequest({ storeName, target, action: Action.put, mode: AccessMode.readwrite }) as Promise } /** * Delete item from a particular store */ - deleteItem(storeName: string, target): Promise { - return this.initRequest({ storeName, target, action: Action.delete, mode: 'readwrite' }) + deleteItem(storeName: ShortStoreName, target: StoredRecordId): Promise { + return this.initRequest({ + storeName, + target, + action: Action.delete, + mode: AccessMode.readwrite + }) as Promise } /** * Delete items until certain bound (primary key as a bound scope) */ - deleteBulk(storeName: string, value: any, condition?: 'lowerBound' | 'upperBound'): Promise { + deleteBulk(storeName: ShortStoreName, value: StoredValue, condition?: KeyRangeCondition): Promise> { const range = condition ? IDBKeyRange[condition](value) : IDBKeyRange.only(value) - return this.openCursor({ storeName, action: Action.delete, range, mode: 'readwrite' }) + return this.openCursor({ + storeName, + action: Action.delete, + range, + mode: AccessMode.readwrite + }) as Promise> } /** * Trim the store from the left by specified length */ - trimItems(storeName: string, length: number): Promise { - const options = SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })] + trimItems(storeName: ShortStoreName, length: number): Promise> { + const options = SchemeMap.right[convertStoreName(storeName, Direction.right)] return this.getAll(storeName) .then(records => records.length ? records[length - 1] : null) - .then(record => record ? this.deleteBulk(storeName, record[options.keyPath], 'upperBound') : []) + .then(record => record ? this.deleteBulk(storeName, record[options.keyPath] as StoredValue, KeyRangeCondition.UpperBound) : []) } /** * Count the number of records in the store */ - count(storeName: string): Promise { + count(storeName: ShortStoreName): Promise { return this.open() .then(() => { return new Promise((resolve, reject) => { if (!this.indexedDbConnection) { reject(this.noConnectionError) } else { - const { store } = this.getTransactionStore({ storeName, mode: 'readonly' }, reject, this.indexedDbConnection) + const { store } = this.getTransactionStore({ storeName, mode: AccessMode.readonly }, reject, this.indexedDbConnection) const request = store.count() @@ -609,17 +667,18 @@ class IndexedDBWrapper implements IStorage { /** * Clear all records from a particular store */ - clear(storeName: string): Promise { - return this.initRequest({ storeName, action: Action.clear, mode: 'readwrite' }) + clear(storeName: ShortStoreName): Promise { + return this.initRequest({ storeName, action: Action.clear, mode: AccessMode.readwrite }) as Promise } /** * Close the database and destroy the reference to it */ - destroy() { + destroy(): void { if (this.indexedDbConnection) { this.indexedDbConnection.close() } + this.indexedDbConnection = null } @@ -627,7 +686,7 @@ class IndexedDBWrapper implements IStorage { * Close db connection and delete the db * WARNING: should be used only by adjust's demo app! */ - deleteDatabase(): Promise { + deleteDatabase(): Promise { this.destroy() return this.deleteDatabaseByName(this.dbName) diff --git a/src/sdk/storage/localstorage.ts b/src/sdk/storage/localstorage.ts index f8446a3..8c1d91f 100644 --- a/src/sdk/storage/localstorage.ts +++ b/src/sdk/storage/localstorage.ts @@ -1,15 +1,23 @@ import ActivityState from '../activity-state' -import QuickStorage from './quick-storage' -import SchemeMap from './scheme-map' import Logger from '../logger' import { recover as recoverPreferences } from '../preferences' -import { entries, findIndex, isEmpty, isObject, reducer } from '../utilities' -import { Direction, convertRecord, convertStoreName } from './converter' -import { IStorage, Error } from './types' +import { entries, findIndex, isEmpty, reducer } from '../utilities' +import { convertRecord, convertStoreName, Direction } from './converter' +import QuickStorage from './quick-storage' +import { isCompositeKeyStoreField, ShortStoreName, StoreOptions } from './scheme' +import SchemeMap from './scheme-map' +import { Error, IStorage, KeyRangeCondition, StoredRecord, StoredRecordId, StoredValue, valueIsRecord } from './types' + +type ActionParameters = { keys: Array, items: Array, index: number, options: StoreOptions, lastId: Maybe } + +type RequestParameters = { storeName: ShortStoreName; id?: StoredRecordId; item?: StoredRecord } + +type Action> = ( + resolve: (value: T) => void, + reject: (reason: Error) => void, + parameters: ActionParameters +) => void -type ActionParameters = { keys, items, index, options, lastId } -type RequestParameters = { storeName: string; id?: any; item?: any } -type Action = (resolve, reject, options: ActionParameters) => void type StorageOpenStatus = { status: string; error?: Error } class LocalStorageWrapper implements IStorage { @@ -64,16 +72,13 @@ class LocalStorageWrapper implements IStorage { entries(storeNames) .filter(([, store]) => !store.permanent) .forEach(([longStoreName, store]) => { - const asStoreName = storeNames.activityState.name - - if (store.name === asStoreName && !QuickStorage.stores[asStoreName]) { - QuickStorage.stores[asStoreName] = inMemoryAvailable ? [convertRecord({ - storeName: longStoreName, - record: activityState, - dir: Direction.left - })] : [] - } else if (!QuickStorage.stores[store.name]) { - QuickStorage.stores[store.name] = [] + const shortStoreName = store.name + if (shortStoreName === ShortStoreName.ActivityState && !QuickStorage.stores[shortStoreName]) { + QuickStorage.stores[shortStoreName] = inMemoryAvailable + ? [convertRecord(longStoreName, Direction.left, activityState)] + : [] + } else if (!QuickStorage.stores[shortStoreName]) { + QuickStorage.stores[shortStoreName] = [] } }) @@ -85,40 +90,36 @@ class LocalStorageWrapper implements IStorage { /** * Get list of composite keys if available - * @param options - * @returns {Array|null} - * @private */ - private getCompositeKeys(options) { - return options.fields[options.keyPath].composite || null + private getCompositeKeys(options: StoreOptions): Nullable> { + const field = options.fields[options.keyPath] + + return isCompositeKeyStoreField(field) ? field.composite : null } /** * Get composite keys when defined or fallback to primary key for particular store - * - * @param {string} storeName - * @returns {Array} - * @private */ - private getKeys(storeName) { - const options = SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })] + private getKeys(storeName: ShortStoreName): Array { + const name = convertStoreName(storeName, Direction.right) + const options: StoreOptions = SchemeMap.right[name] return this.getCompositeKeys(options) || [options.keyPath] } + /** + * Return next index using the current one and undefined if current is undefined + */ + private nextIndex(current: Maybe): Maybe { + return typeof current === 'number' ? current + 1 : undefined + } + /** * Initiate quasi-database request - * - * @param {string} storeName - * @param {*=} id - * @param {Object=} item - * @param {Function} action - * @returns {Promise} - * @private */ - private initRequest({ storeName, id, item }: RequestParameters, action: Action) { + private initRequest({ storeName, id, item }: RequestParameters, action: Action): Promise { - const options = SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })] + const options = SchemeMap.right[convertStoreName(storeName, Direction.right)] return this.open() .then(open => { @@ -126,19 +127,23 @@ class LocalStorageWrapper implements IStorage { return Promise.reject(open.error) } - return new Promise((resolve, reject) => { - const items = QuickStorage.stores[storeName] + return new Promise((resolve, reject) => { + const items: Array = QuickStorage.stores[storeName] const keys = this.getKeys(storeName) - const ids = id instanceof Array ? id.slice() : [id] - const lastId = (items[items.length - 1] || {})[options.keyPath] || 0 - const target = id - ? keys + const lastId = ((items[items.length - 1] || {})[options.keyPath] || 0) as number + + let target: StoredRecord + + if (!id) { + target = { ...item } + } else { + const ids = Array.isArray(id) ? id.slice() : [id] + target = keys .map((key, index) => [key, ids[index]]) .reduce(reducer, {}) - : { ...item } - + } - const index = target ? findIndex(items, keys, target) : null + const index = target ? findIndex(items, keys, target) : 0 return action(resolve, reject, { keys, items, index, options, lastId }) }) @@ -149,18 +154,12 @@ class LocalStorageWrapper implements IStorage { * Sort the array by provided key (key can be a composite one) * - by default sorts in ascending order by primary keys * - force order by provided value - * - * @param {Array} items - * @param {Array} keys - * @param {string=} exact - * @returns {Array} - * @private */ - private sort(items, keys, exact?: string) { + private sort(items: Array, keys: Array, exact?: Nullable): Array { const clone = [...items] const reversed = keys.slice().reverse() - function compare(a, b, key) { + function compare(a: T, b: T, key: string) { const expr1 = exact ? exact === a[key] : a[key] < b[key] const expr2 = exact ? exact > a[key] : a[key] > b[key] @@ -175,14 +174,8 @@ class LocalStorageWrapper implements IStorage { /** * Prepare the target to be queried depending on the composite key if defined - * - * @param {Object} options - * @param {*} target - * @param {number} next - * @returns {*} - * @private */ - private prepareTarget(options, target: any, next?: number) { + private prepareTarget(options: StoreOptions, target: StoredRecord, next?: number): StoredRecord { const composite = this.getCompositeKeys(options) return composite ? { [options.keyPath]: composite.map(key => target[key]).join(''), ...target } @@ -193,27 +186,23 @@ class LocalStorageWrapper implements IStorage { /** * Prepare the result to be return depending on the composite key definition - * - * @param {Object} options - * @param {Object} target - * @returns {*} - * @private */ - private prepareResult(options, target) { + private prepareResult(options: StoreOptions, target: StoredRecord): StoredRecordId { const composite = this.getCompositeKeys(options) - return composite && isObject(target) - ? composite.map(key => target[key]) - : (target[options.keyPath] || target) + + if (composite) { + return composite + .map(key => target[key]) + .filter((value): value is StoredValue => !valueIsRecord(value)) + } + + return target[options.keyPath] as StoredValue } /** * Get all records from particular store - * - * @param {string} storeName - * @param {boolean=} firstOnly - * @returns {Promise} */ - getAll(storeName: string, firstOnly?: boolean): Promise> { + getAll(storeName: ShortStoreName, firstOnly = false): Promise> { return this.open() .then(open => { if (open.status === 'error') { @@ -224,7 +213,7 @@ class LocalStorageWrapper implements IStorage { const value = QuickStorage.stores[storeName] if (value instanceof Array) { - resolve(firstOnly ? value[0] : this.sort(value, this.getKeys(storeName))) + resolve(firstOnly ? [value[0]] : this.sort(value, this.getKeys(storeName))) } else { reject({ name: 'NotFoundError', message: `No objectStore named ${storeName} in this database` }) } @@ -234,59 +223,50 @@ class LocalStorageWrapper implements IStorage { /** * Get the first row from the store - * - * @param {string} storeName - * @returns {Promise} */ - getFirst(storeName: string): Promise { + getFirst(storeName: ShortStoreName): Promise> { return this.getAll(storeName, true) + .then(all => all.length ? all[0] : undefined) } /** * Get item from a particular store - * - * @param {string} storeName - * @param {*} id - * @returns {Promise} */ - getItem(storeName: string, id): Promise { - return this.initRequest({ storeName, id }, (resolve, reject, { items, index, options }) => { + getItem(storeName: ShortStoreName, id: StoredRecordId): Promise { + const action: Action = (resolve, reject, { items, index, options }) => { if (index === -1) { reject({ name: 'NotRecordFoundError', message: `Requested record not found in "${storeName}" store` }) } else { resolve(this.prepareTarget(options, items[index])) } - }) + } + + return this.initRequest({ storeName, id }, action) } /** * Return filtered result by value on available index - * - * @param {string} storeName - * @param {string} by - * @returns {Promise} */ - filterBy(storeName: string, by: string): Promise { + filterBy(storeName: ShortStoreName, by: StoredValue): Promise> { return this.getAll(storeName) - .then(result => result - .filter(item => { - return item[SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })].index] === by - })) + .then((result: Array) => { + return result.filter(item => { + const store = SchemeMap.right[convertStoreName(storeName, Direction.right)] + const indexedValue = store.index && item[store.index] + return indexedValue === by + }) + }) } /** * Add item to a particular store - * - * @param {string} storeName - * @param {Object} item - * @returns {Promise} */ - addItem(storeName: string, item): Promise { + addItem(storeName: ShortStoreName, item: StoredRecord): Promise { return this.initRequest({ storeName, item }, (resolve, reject, { items, index, options, lastId }) => { if (index !== -1) { reject({ name: 'ConstraintError', message: `Constraint was not satisfied, trying to add existing item into "${storeName}" store` }) } else { - items.push(this.prepareTarget(options, item, (lastId + 1))) + items.push(this.prepareTarget(options, item, this.nextIndex(lastId))) QuickStorage.stores[storeName] = items resolve(this.prepareResult(options, item)) } @@ -295,21 +275,16 @@ class LocalStorageWrapper implements IStorage { /** * Add multiple items into particular store - * - * @param {string} storeName - * @param {Object} target - * @param {boolean=} overwrite - * @returns {Promise} */ - addBulk(storeName: string, target, overwrite: boolean): Promise { + addBulk(storeName: ShortStoreName, target: Array, overwrite: boolean): Promise> { return this.initRequest({ storeName }, (resolve, reject, { keys, items, options, lastId }) => { if (!target || target && !target.length) { - return reject({ name: 'NoTargetDefined', message: `No array provided to perform add bulk operation into "${storeName}" store` }) + reject({ name: 'NoTargetDefined', message: `No array provided to perform add bulk operation into "${storeName}" store` }) + return } let id = lastId - const newItems = target - .map(item => this.prepareTarget(options, item, ++id)) + const newItems = target.map(item => this.prepareTarget(options, item, id = this.nextIndex(id))) const overlapping = newItems .filter(item => findIndex(items, keys, item) !== -1) @@ -321,21 +296,18 @@ class LocalStorageWrapper implements IStorage { reject({ name: 'ConstraintError', message: `Constraint was not satisfied, trying to add existing items into "${storeName}" store` }) } else { QuickStorage.stores[storeName] = this.sort([...currentItems, ...newItems], keys) - resolve(target.map(item => this.prepareResult(options, item))) + const result = target.map(item => this.prepareResult(options, item)) + resolve(result) } }) } /** * Update item in a particular store - * - * @param {string} storeName - * @param {Object} item - * @returns {Promise} */ - updateItem(storeName: string, item): Promise { + updateItem(storeName: ShortStoreName, item: StoredRecord): Promise { return this.initRequest({ storeName, item }, (resolve, _, { items, index, options, lastId }) => { - const nextId = index === -1 ? (lastId + 1) : null + const nextId = index === -1 ? this.nextIndex(lastId) : undefined const target = this.prepareTarget(options, item, nextId) if (index === -1) { @@ -351,12 +323,8 @@ class LocalStorageWrapper implements IStorage { /** * Delete item from a particular store - * - * @param {string} storeName - * @param {*} id - * @returns {Promise} */ - deleteItem(storeName: string, id): Promise { + deleteItem(storeName: ShortStoreName, id: StoredRecordId): Promise { return this.initRequest({ storeName, id }, (resolve, _, { items, index }) => { if (index !== -1) { items.splice(index, 1) @@ -369,25 +337,19 @@ class LocalStorageWrapper implements IStorage { /** * Find index of the item with the closest value to the bound - * - * @param {Array} array - * @param {string} key - * @param {number|string} value - * @returns {number} - * @private */ - private findMax(array, key, value) { + private findMax(array: Array, key: string, value: StoredValue): number { if (!array.length) { return -1 } - let max = { index: -1, value: (isNaN(value) ? '' : 0) } + let max = { index: -1, value: (typeof value === 'string' ? '' : 0) } for (let i = 0; i < array.length; i += 1) { if (array[i][key] <= value) { if (array[i][key] >= max.value) { - max = { value: array[i][key], index: i } + max = { value: array[i][key] as StoredValue, index: i } } } else { return max.index @@ -399,33 +361,29 @@ class LocalStorageWrapper implements IStorage { /** * Delete items until certain bound (primary key as a bound scope) - * - * @param {string} storeName - * @param {*} value - * @param {string=} condition - * @returns {Promise} + * Returns array of deleted elements */ - deleteBulk(storeName: string, value: any, condition?: 'lowerBound' | 'upperBound'): Promise { + deleteBulk(storeName: ShortStoreName, value: StoredValue, condition?: KeyRangeCondition): Promise> { return this.getAll(storeName) - .then(items => { + .then((items: Array) => { const keys = this.getKeys(storeName) - const key = SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })].index || keys[0] + const key = SchemeMap.right[convertStoreName(storeName, Direction.right)].index || keys[0] const exact = condition ? null : value - const sorted = this.sort(items, keys, exact) + const sorted: Array = this.sort(items, keys, exact) const index = this.findMax(sorted, key, value) if (index === -1) { return [] } - const start = condition === 'lowerBound' ? index : 0 - const end = !condition || condition === 'upperBound' ? (index + 1) : sorted.length - const deleted = sorted + const start = condition === KeyRangeCondition.LowerBound ? index : 0 + const end = !condition || condition === KeyRangeCondition.UpperBound ? (index + 1) : sorted.length + const deleted: Array = sorted .splice(start, end) .map(item => keys.length === 1 ? item[key] - : keys.map(k => item[k])) + : keys.map(k => item[k])) as Array QuickStorage.stores[storeName] = sorted @@ -435,43 +393,35 @@ class LocalStorageWrapper implements IStorage { /** * Trim the store from the left by specified length - * - * @param {string} storeName - * @param {number} length - * @returns {Promise} */ - trimItems(storeName: string, length: number): Promise { - const options = SchemeMap.right[convertStoreName({ storeName, dir: Direction.right })] + trimItems(storeName: ShortStoreName, length: number): Promise> { + const convertedName = convertStoreName(storeName, Direction.right) + const options: StoreOptions = SchemeMap.right[convertedName] return this.getAll(storeName) - .then(records => records.length ? records[length - 1] : null) - .then(record => record ? this.deleteBulk(storeName, record[options.keyPath], 'upperBound') : []) + .then((records: Array>) => records.length ? records[length - 1] : null) + .then(record => record ? this.deleteBulk(storeName, record[options.keyPath], KeyRangeCondition.UpperBound) : []) } /** * Count the number of records in the store - * - * @param {string} storeName - * @returns {Promise} */ - count(storeName: string): Promise { + count(storeName: ShortStoreName): Promise { return this.open() .then(open => { if (open.status === 'error') { return Promise.reject(open.error) } - return Promise.resolve(QuickStorage.stores[storeName].length) + const records = QuickStorage.stores[storeName] + return Promise.resolve(records instanceof Array ? records.length : 1) }) } /** * Clear all records from a particular store - * - * @param {string} storeName - * @returns {Promise} */ - clear(storeName: string): Promise { + clear(storeName: ShortStoreName): Promise { return this.open() .then(open => { if (open.status === 'error') { @@ -480,7 +430,7 @@ class LocalStorageWrapper implements IStorage { return new Promise(resolve => { QuickStorage.stores[storeName] = [] - resolve({}) + resolve() }) }) } diff --git a/src/sdk/storage/quick-storage.ts b/src/sdk/storage/quick-storage.ts index 108baf3..2797d03 100644 --- a/src/sdk/storage/quick-storage.ts +++ b/src/sdk/storage/quick-storage.ts @@ -2,14 +2,12 @@ import { convertRecord, Direction } from './converter' import { values } from '../utilities' import Globals from '../globals' import SchemeMap from './scheme-map' -import { ShortStoreName } from './scheme' +import { ShortPreferencesStoreName, ShortStoreName } from './scheme' +import { StoredRecord } from './types' -interface Store { - get: () => T | T[] - set: (value: T[]) => void -} +type StoreContent = Array | StoredRecord -type StoresMap = { [key in ShortStoreName]: Store } +type StoresMap = Record>> | Record class QuickStorage { private defaultName = Globals.namespace @@ -23,33 +21,28 @@ class QuickStorage { /** * Get the value for specified key */ - private read(key: string) { - const raw = localStorage.getItem(`${this.storageName}.${key}`) - const value = JSON.parse(raw || 'null') - return (value instanceof Array - ? value - : convertRecord({ - storeName: this.storeNames.preferences.name, - dir: Direction.right, - record: value - })) || null + private read(key: ShortStoreName | ShortPreferencesStoreName): Nullable { + const valueToParse = localStorage.getItem(`${this.storageName}.${key}`) + const value = valueToParse ? JSON.parse(valueToParse) : null + + if (key === ShortPreferencesStoreName.Preferences && value) { + return convertRecord(ShortPreferencesStoreName.Preferences, Direction.right, value) + } + + return value } /** * Set the value for specified key */ - private write(key: string, value: any) { + private write(key: ShortStoreName | ShortPreferencesStoreName, value: StoreContent) { if (!value) { localStorage.removeItem(`${this.storageName}.${key}`) } else { localStorage.setItem(`${this.storageName}.${key}`, JSON.stringify( value instanceof Array ? value - : convertRecord({ - storeName: this.storeNames.preferences.name, - dir: Direction.left, - record: value - }) + : convertRecord(ShortPreferencesStoreName.Preferences, Direction.left, value) )) } } @@ -83,9 +76,10 @@ class QuickStorage { values(this.storeNames) .forEach((store) => { - Object.defineProperty(this.storesMap, store.name, { - get() { return read(store.name) }, - set(value) { write(store.name, value) } + const shortStoreName = store.name + Object.defineProperty(this.storesMap, shortStoreName, { + get() { return read(shortStoreName) }, + set(value) { write(shortStoreName, value) } }) }) diff --git a/src/sdk/storage/scheme-map.ts b/src/sdk/storage/scheme-map.ts index 5729aa2..16ae9de 100644 --- a/src/sdk/storage/scheme-map.ts +++ b/src/sdk/storage/scheme-map.ts @@ -1,14 +1,33 @@ -import { reducer, entries } from '../utilities' -import Scheme from './scheme' +import { entries, reducer, values } from '../utilities' +import Scheme, { + isComplexStoreField, + isCompositeKeyStoreField, + isNestingStoreField, + isPredefinedValuesField, + Store, + StoreFields, + StoreFieldScheme, + StoreName, + StoreNames, + ShortStoreNames, + StoreOptions, + StoreOptionsOptionalKey +} from './scheme' + +type StoreConfiguration = { name: ShortStoreNames; permanent: Maybe } + +type StoresConfigurationMap = Record + +type StoreConfigurationFlipped = { name: StoreNames; permanent: Maybe } + +type StoresConfigurationMapFlipped = Record + +type StoreScheme = Record /** * Cast value into it's original type - * - * @param {string} value - * @returns {*} - * @private */ -function _parseValue(value) { +function _parseValue(value: string): any { // eslint-disable-line @typescript-eslint/no-explicit-any try { return JSON.parse(value) } catch (e) { @@ -18,12 +37,8 @@ function _parseValue(value) { /** * Flip key/value pairs - * - * @param {Object} obj - * @returns {Object} - * @private */ -function _flipObject(obj) { +function _flipObject(obj: Record): Record { return entries(obj) .map(([key, value]) => [value, _parseValue(key)]) .reduce(reducer, {}) @@ -32,105 +47,93 @@ function _flipObject(obj) { /** * Flip store name definition names: * - short key pointing the long one along with additional configuration - * - * @param {Object} obj - * @returns {Object} - * @private */ -function _flipStoreNames(obj) { - return entries(obj) - .map(([name, options]) => [options.name, { - name, - permanent: options.permanent - }]) - .reduce(reducer, {}) +function _flipStoreNames(obj: StoresConfigurationMap): StoresConfigurationMapFlipped { + const flippedConfigs: Array<[ShortStoreNames, StoreConfigurationFlipped]> = entries(obj) + .map(([name, options]: [StoreName, StoreConfiguration]) => { + const config = { + name, + permanent: options.permanent + } + + return [options.name, config] + }) + + return flippedConfigs.reduce(reducer, {} as StoresConfigurationMapFlipped) } /** * Flip store scheme values - * - * @param {string} storeName - * @param {string} key - * @param {Object} scheme - * @returns {Object} - * @private */ -function _flipStoreScheme(storeName, key, scheme) { - const values = scheme.values ? { values: _flipObject(scheme.values) } : {} - const keys = scheme.keys ? { keys: _flipScheme(storeName, scheme.keys) } : {} - const composite = scheme.composite ? { composite: scheme.composite.map(key => _getShortKey(storeName, key)) } : {} +function _flipStoreScheme(storeName: StoreNames, key: string, scheme: StoreFieldScheme) { + const values = isPredefinedValuesField(scheme) ? { values: _flipObject(scheme.values) } : {} + const keys = isNestingStoreField(scheme) ? { keys: _flipScheme(storeName, scheme.keys) } : {} + const composite = isCompositeKeyStoreField(scheme) ? { composite: scheme.composite.map(key => _getShortKey(storeName, key)) } : {} return { key, ...values, ...keys, ...composite } } /** * Flip general scheme recursivelly - * - * @param {string} storeName - * @param {Object} fieldsScheme - * @returns {Object} - * @private */ -function _flipScheme(storeName, fieldsScheme) { - return entries(fieldsScheme) - .map(([key, scheme]) => scheme.key - ? [scheme.key, _flipStoreScheme(storeName, key, scheme)] - : [scheme, key]) +function _flipScheme(storeName: StoreNames, fieldsScheme: StoreFields) { + return entries(fieldsScheme) + .map(([key, scheme]: [string, StoreFieldScheme]) => { + return isComplexStoreField(scheme) + ? [scheme.key, _flipStoreScheme(storeName, key, scheme)] + : [scheme, key] + }) .reduce(reducer, {}) } /** * Extend base scheme with some more maps for encoding - * - * @returns {Object} - * @private */ -function _prepareLeft() { - return entries(Scheme) - .map(([storeName, store]) => [ - storeName, - { +function _prepareLeft(): StoreScheme { + const storesOptions: Array<[StoreNames, StoreOptionsOptionalKey]> = entries(Scheme) + .map(([storeName, store]: [StoreNames, Store]) => { + const options: StoreOptionsOptionalKey = { keyPath: store.scheme.keyPath, autoIncrement: store.scheme.autoIncrement, index: store.scheme.index, fields: store.scheme.fields } - ]) - .reduce(reducer, {}) + + return [storeName, options] + }) + + return storesOptions.reduce(reducer, {} as StoreScheme) } /** * Prepare scheme for decoding - * - * @returns {Object} - * @private */ -function _prepareRight() { - return entries(Left) - .map(([storeName, storeScheme]) => [ - storeName, - { +function _prepareRight(): StoreScheme { + const storesOptionsEncoded: Array<[StoreNames, StoreOptionsOptionalKey]> = entries(Left) + .map(([storeName, storeScheme]) => { + const options: StoreOptionsOptionalKey = { keyPath: _getShortKey(storeName, storeScheme.keyPath), autoIncrement: storeScheme.autoIncrement, index: _getShortKey(storeName, storeScheme.index), fields: _flipScheme(storeName, storeScheme.fields) } - ]) - .reduce(reducer, {}) + + return [storeName, options] + }) + + return storesOptionsEncoded.reduce(reducer, {} as StoreScheme) } /** * Get available values for encoding - * - * @returns {Object} - * @private */ -function _getValuesMap() { +function _getValuesMap(): Record { + // all pairs of predefined keys and values such as {GET: 1} return entries(Scheme) - .reduce((acc, [, store]) => acc.concat(store.scheme.fields), []) - .map(scheme => entries(scheme) - .filter(([, map]) => map.values) - .map(([, map]) => entries(map.values)) + .reduce((acc, [, store]) => acc.concat(store.scheme.fields), [] as Array) + .map(scheme => values(scheme) + .filter(isPredefinedValuesField) + .map(map => entries(map.values)) .reduce((acc, map) => acc.concat(map), [])) .reduce((acc, map) => acc.concat(map), []) .reduce(reducer, {}) @@ -138,43 +141,49 @@ function _getValuesMap() { /** * Get short key version of a specified key - * - * @param {string} storeName - * @param {string} key - * @returns {string} - * @private */ -function _getShortKey(storeName, key) { +function _getShortKey(storeName: StoreNames, key: Maybe): Maybe { + if (!key) { + return undefined + } + const map = Scheme[storeName].scheme.fields[key] - return map ? (map.key || map) : key + + if (isComplexStoreField(map)) { + return map.key + } + + return map || key } /** * Get store names and their general configuration (if store is permanent or not) - * - * @returns {Object} - * @private */ -function _getStoreNames(): {[shortName: string]: {name: string; permanent: boolean}} { - return entries(Scheme) - .map(([storeName, scheme]) => [storeName, { - name: scheme.name, - permanent: scheme.permanent - }]) - .reduce(reducer, {}) +function _getStoreNames(): StoresConfigurationMap { + const storeNames: Array<[StoreName, StoreConfiguration]> = entries(Scheme) + .map(([name, store]) => { + const config = { + name: store.name, + permanent: store.permanent + } + return [name, config] + }) + + return storeNames.reduce(reducer, {} as Record) } + const Left = _prepareLeft() const Right = _prepareRight() const Values = _getValuesMap() -const StoreNames = _getStoreNames() +const StoreNamesAndConfigs = _getStoreNames() export default { left: Left, right: Right, values: Values, storeNames: { - left: StoreNames, - right: _flipStoreNames(StoreNames) + left: StoreNamesAndConfigs, + right: _flipStoreNames(StoreNamesAndConfigs) } } diff --git a/src/sdk/storage/scheme.ts b/src/sdk/storage/scheme.ts index f1470ff..29570c1 100644 --- a/src/sdk/storage/scheme.ts +++ b/src/sdk/storage/scheme.ts @@ -1,47 +1,87 @@ import { REASON_GDPR, REASON_GENERAL } from '../constants' +import { StoredValue } from './types' -type StoreFieldScheme = string // Just a short name for the field - | { // Field with predefined values - key: string; // Short name of the field - values: { [key: string]: number | string }; // Map of possible values - } - | { // Field containing a nested one - key: string; // Short name of the field - keys: { [key: string]: StoreFieldScheme } // Field scheme - } - | { // Composite key, stored as a field because of IE doesn't support composite keys feature - key: string; // Short name of the composite key - composite: Array // Names (not short) of fields used to generate a key - } +/** + * Field with predefined values + */ +type StoreFieldPredefinedValues = { + key: string; // Short name of the field + values: Record; // Map of possible values +} + +/** + * Field containing a nested one + */ +type StoreFieldNestingFields = { + key: string; // Short name of the field + keys: Record; // Field scheme +} + +/** + * Composite key, stored as a field because of IE doesn't support composite keys feature + */ +type StoreFieldCompositeKey = { + key: string; // Short name of the composite key + composite: Array; // Names (not short) of fields used to generate a key +} + +type StoreFieldComplex = StoreFieldPredefinedValues | StoreFieldCompositeKey | StoreFieldNestingFields + +type StoreFieldScheme = string | StoreFieldComplex interface StoreKeyOptions { keyPath?: string; autoIncrement?: boolean; } -interface StoreScheme extends StoreKeyOptions { - index?: string | Array; - fields: { [key: string]: StoreFieldScheme }; +type StoreFields = Record + +interface StoreOptionsOptionalKey extends StoreKeyOptions { + index?: string; + fields: StoreFields; } -interface Store { - name: string; - scheme: StoreScheme; - permanent?: boolean; +interface StoreOptions extends StoreKeyOptions { + keyPath: string; // override keyPath to be required + index?: string; + fields: StoreFields; +} + +enum StoreName { + Queue = 'queue', + ActivityState = 'activityState', + GlobalParams = 'globalParams', + EventDeduplication = 'eventDeduplication' +} + +enum PreferencesStoreName { + Preferences = 'preferences' } -interface Scheme { - queue: Store; - activityState: Store; - globalParams: Store; - eventDeduplication: Store; - preferences: Store; +type StoreNames = StoreName | PreferencesStoreName + +enum ShortStoreName { + Queue = 'q', + ActivityState = 'as', + GlobalParams = 'gp', + EventDeduplication = 'ed' +} + +enum ShortPreferencesStoreName { + Preferences = 'p' } -type ShortStoreName = 'q' | 'as' | 'gp' | 'ed' | 'p' +type ShortStoreNames = ShortStoreName | ShortPreferencesStoreName -const _queueName = 'q' -const _queueScheme: StoreScheme = { +interface Store { + name: ShortStoreName | ShortPreferencesStoreName; + scheme: StoreOptions | StoreOptionsOptionalKey; + permanent?: boolean; +} + +type Scheme = Record + +const _queueScheme: StoreOptions = { keyPath: 'timestamp', autoIncrement: false, fields: { @@ -84,8 +124,7 @@ const _queueScheme: StoreScheme = { } } -const _activityStateName = 'as' -const _activityStateScheme: StoreScheme = { +const _activityStateScheme: StoreOptions = { keyPath: 'uuid', autoIncrement: false, fields: { @@ -131,8 +170,7 @@ const _activityStateScheme: StoreScheme = { } } -const _globalParamsName = 'gp' -const _globalParamsScheme: StoreScheme = { +const _globalParamsScheme: StoreOptions = { keyPath: 'keyType', autoIncrement: false, index: 'type', @@ -153,8 +191,7 @@ const _globalParamsScheme: StoreScheme = { } } -const _eventDeduplicationName = 'ed' -const _eventDeduplicationScheme: StoreScheme = { +const _eventDeduplicationScheme: StoreOptions = { keyPath: 'internalId', autoIncrement: true, fields: { @@ -163,8 +200,7 @@ const _eventDeduplicationScheme: StoreScheme = { } } -const _preferencesName = 'p' -const _preferencesScheme: StoreScheme = { +const _preferencesScheme: StoreOptionsOptionalKey = { fields: { thirdPartySharingDisabled: { key: 'td', @@ -208,28 +244,61 @@ const _preferencesScheme: StoreScheme = { const scheme: Scheme = { queue: { - name: _queueName, + name: ShortStoreName.Queue, scheme: _queueScheme }, activityState: { - name: _activityStateName, + name: ShortStoreName.ActivityState, scheme: _activityStateScheme }, globalParams: { - name: _globalParamsName, + name: ShortStoreName.GlobalParams, scheme: _globalParamsScheme }, eventDeduplication: { - name: _eventDeduplicationName, + name: ShortStoreName.EventDeduplication, scheme: _eventDeduplicationScheme }, preferences: { - name: _preferencesName, + name: ShortPreferencesStoreName.Preferences, scheme: _preferencesScheme, permanent: true } } -export { ShortStoreName } +function isPredefinedValuesField(field: Maybe): field is StoreFieldPredefinedValues { + return !!field && Object.prototype.hasOwnProperty.call(field, 'values') +} + +function isNestingStoreField(field: Maybe): field is StoreFieldNestingFields { + return !!field && Object.prototype.hasOwnProperty.call(field, 'keys') +} + +function isCompositeKeyStoreField(field: Maybe): field is StoreFieldCompositeKey { + return !!field && Object.prototype.hasOwnProperty.call(field, 'composite') +} + +function isComplexStoreField(field: Maybe): field is StoreFieldComplex { + return !!field && typeof(field) !== 'string' +} + +export { + StoreName, + ShortStoreName, + StoreNames, + ShortStoreNames, + PreferencesStoreName, + ShortPreferencesStoreName, + Store, + StoreOptions, + StoreOptionsOptionalKey, + StoreFieldScheme, + StoreFields, + StoreFieldPredefinedValues, + isPredefinedValuesField, + isNestingStoreField, + isCompositeKeyStoreField, + isComplexStoreField +} export default scheme diff --git a/src/sdk/storage/storage.ts b/src/sdk/storage/storage.ts index 80aa501..f3489b1 100644 --- a/src/sdk/storage/storage.ts +++ b/src/sdk/storage/storage.ts @@ -1,19 +1,32 @@ -import { IStorage } from './types' -import { IndexedDB } from './indexeddb' -import { LocalStorage } from './localstorage' -import QuickStorage from './quick-storage' +import { STORAGE_TYPES } from '../constants' import Logger from '../logger' -import { reducer, entries } from '../utilities' +import { entries, reducer } from '../utilities' import { Direction, convertRecord, convertRecords, + convertStoreName, convertValues, + decodeErrorMessage, encodeValue, - convertStoreName, - decodeErrorMessage } from './converter' -import { STORAGE_TYPES } from '../constants' +import { IndexedDB } from './indexeddb' +import { LocalStorage } from './localstorage' +import QuickStorage from './quick-storage' +import { ShortStoreName, StoreName } from './scheme' +import { IStorage, KeyRangeCondition, StoredRecord, StoredRecordId, StoredValue } from './types' + +type OtherArgs = any[] // eslint-disable-line @typescript-eslint/no-explicit-any + +type CommonStorageMethod = (storage: IStorage, store: ShortStoreName, ...args: OtherArgs) => Promise | void + +type CommonStorageMethods = Record & { deleteDatabase: CommonStorageMethod } + +type StorageMethod = (store: StoreName, ...args: OtherArgs) => Promise + +type MethodName = keyof CommonStorageMethods + +type StorageMethods = Record enum StorageType { noStorage = STORAGE_TYPES.NO_STORAGE, @@ -28,11 +41,8 @@ type Storage = { /** * Methods to extend - * - * @type {Object} - * @private */ -const _methods = { +const _methods: CommonStorageMethods = { getAll: _getAll, getFirst: _getFirst, getItem: _getItem, @@ -51,211 +61,137 @@ const _methods = { /** * Extends storage's getAll method by decoding returned records - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _getAll(storage, storeName) { - return storage.getAll(storeName) - .then(records => convertRecords({ storeName, dir: Direction.right, records })) +function _getAll(storage: IStorage, storeName: ShortStoreName, firstOnly: boolean) { + return storage.getAll(storeName, firstOnly) + .then(records => convertRecords(storeName, Direction.right, records)) } /** * Extends storage's getFirst method by decoding returned record - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _getFirst(storage, storeName) { +function _getFirst(storage: IStorage, storeName: ShortStoreName) { return storage.getFirst(storeName) - .then(record => convertRecord({ storeName, dir: Direction.right, record })) + .then(record => convertRecord(storeName, Direction.right, record)) } /** * Extends storage's getItem method by encoding target value and then decoding returned record - * - * @param {Object} storage - * @param {string} storeName - * @param {string|string[]} target - * @returns {Promise} - * @private */ -function _getItem(storage, storeName, target) { - return storage.getItem(storeName, convertValues({ storeName, dir: Direction.left, target })) - .then(record => convertRecord({ storeName, dir: Direction.right, record })) - .catch(error => Promise.reject(decodeErrorMessage({ storeName, error }))) +function _getItem(storage: IStorage, storeName: ShortStoreName, target: StoredRecordId) { + return storage.getItem(storeName, convertValues(storeName, Direction.left, target)) + .then(record => convertRecord(storeName, Direction.right, record)) + .catch(error => Promise.reject(decodeErrorMessage(storeName, error))) } /** * Extends storage's filterBy method by encoding target value and then decoding returned records - * - * @param {Object} storage - * @param {string} storeName - * @param {string} target - * @returns {Promise} - * @private */ -function _filterBy(storage, storeName, target) { +function _filterBy(storage: IStorage, storeName: ShortStoreName, target: string) { return storage.filterBy(storeName, encodeValue(target)) - .then(records => convertRecords({ storeName, dir: Direction.right, records })) + .then(records => convertRecords(storeName, Direction.right, records)) } /** * Extends storage's addItem method by encoding target record and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param {Object} record - * @returns {Promise} - * @private */ -function _addItem(storage, storeName, record) { - return storage.addItem(storeName, convertRecord({ storeName, dir: Direction.left, record })) - .then(target => convertValues({ storeName, dir: Direction.right, target })) - .catch(error => Promise.reject(decodeErrorMessage({ storeName, error }))) +function _addItem(storage: IStorage, storeName: ShortStoreName, record: StoredRecord) { + const convertedRecord = convertRecord(storeName, Direction.left, record) + return storage.addItem(storeName, convertedRecord) + .then(target => convertValues(storeName, Direction.right, target)) + .catch(error => Promise.reject(decodeErrorMessage(storeName, error))) } /** * Extends storage's addBulk method by encoding target records and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param {Object[]} records - * @param {boolean} overwrite - * @returns {Promise} - * @private */ -function _addBulk(storage, storeName, records, overwrite) { - return storage.addBulk(storeName, convertRecords({ storeName, dir: Direction.left, records }), overwrite) - .then(values => values.map(target => convertValues({ storeName, dir: Direction.right, target }))) - .catch(error => Promise.reject(decodeErrorMessage({ storeName, error }))) +function _addBulk(storage: IStorage, storeName: ShortStoreName, records: Array, overwrite: boolean) { + const convertedRecords: Array = convertRecords(storeName, Direction.left, records) + return storage.addBulk(storeName, convertedRecords, overwrite) + .then(values => values.map(target => convertValues(storeName, Direction.right, target))) + .catch(error => Promise.reject(decodeErrorMessage(storeName, error))) } /** * Extends storage's updateItem method by encoding target record and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param record - * @returns {Promise} - * @private */ -function _updateItem(storage, storeName, record) { - return storage.updateItem(storeName, convertRecord({ storeName, dir: Direction.left, record })) - .then(target => convertValues({ storeName, dir: Direction.right, target })) +function _updateItem(storage: IStorage, storeName: ShortStoreName, record: StoredRecord) { + const convertedRecord = convertRecord(storeName, Direction.left, record) + return storage.updateItem(storeName, convertedRecord) + .then(target => convertValues(storeName, Direction.right, target)) } /** * Extends storage's deleteItem method by encoding target value and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param {string|string[]} target - * @returns {Promise} - * @private */ -function _deleteItem(storage, storeName, target) { - return storage.deleteItem(storeName, convertValues({ storeName, dir: Direction.left, target })) - .then(target => convertValues({ storeName, dir: Direction.right, target })) +function _deleteItem(storage: IStorage, storeName: ShortStoreName, target: StoredRecordId) { + return storage.deleteItem(storeName, convertValues(storeName, Direction.left, target)) + .then(target => convertValues(storeName, Direction.right, target)) } /** * Extends storage's deleteBulk method by encoding target value and then decoding returned records that are deleted - * - * @param {Object} storage - * @param {string} storeName - * @param {string} target - * @param {string?} condition - * @returns {Promise} - * @private */ -function _deleteBulk(storage, storeName, target, condition) { - return storage.deleteBulk(storeName, encodeValue(target), condition) - .then(records => records.map(record => convertValues({ storeName, dir: Direction.right, target: record }))) +function _deleteBulk(storage: IStorage, storeName: ShortStoreName, value: StoredValue, condition?: KeyRangeCondition) { + return storage.deleteBulk(storeName, encodeValue(value), condition) + .then(records => records.map(record => convertValues(storeName, Direction.right, record))) } /** * Extends storage's trimItems method by passing encoded storage name - * - * @param {Object} storage - * @param {string} storeName - * @param {number} length - * @returns {Promise} - * @private */ -function _trimItems(storage, storeName, length) { +function _trimItems(storage: IStorage, storeName: ShortStoreName, length: number) { return storage.trimItems(storeName, length) } /** * Extends storage's count method by passing encoded storage name - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _count(storage, storeName) { +function _count(storage: IStorage, storeName: ShortStoreName) { return storage.count(storeName) } /** * Extends storage's clear method by passing encoded storage name - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _clear(storage, storeName) { +function _clear(storage: IStorage, storeName: ShortStoreName) { return storage.clear(storeName) } /** * Calls storage's destroy method - * - * @param {Object} storage - * @private */ -function _destroy(storage) { +function _destroy(storage: IStorage) { return storage.destroy() } /** * Calls storage's deleteDatabase method - * - * @param {Object} storage - * @private */ -function _deleteDatabase(storage) { +function _deleteDatabase(storage: IndexedDB | LocalStorage) { return storage.deleteDatabase() } /** * Augment whitelisted methods with encoding/decoding functionality - * - * @param {Object} storage - * @returns {Object} - * @private */ -function _augment() { +function _augment(): StorageMethods { + const methods: Array<[MethodName, StorageMethod]> = entries(_methods) + .map(([methodName, method]: [MethodName, CommonStorageMethod]) => { - return entries(_methods) - .map(([methodName, method]) => { - return [methodName, (storeName, ...args) => { + const augmentedMethod: StorageMethod = (storeName: StoreName, ...args) => { return init() .then(({ storage }) => { if (storage) { - return method.call(null, storage, convertStoreName({ storeName, dir: Direction.left }), ...args) + return method.call(null, storage, convertStoreName(storeName, Direction.left), ...args) } }) - }] + } + + return [methodName, augmentedMethod] }) - .reduce(reducer, {}) + + return methods.reduce(reducer, {} as StorageMethods) } /** diff --git a/src/sdk/storage/types.ts b/src/sdk/storage/types.ts index df1d2c4..47fa49d 100644 --- a/src/sdk/storage/types.ts +++ b/src/sdk/storage/types.ts @@ -1,24 +1,39 @@ -interface IStorage { - getAll: (storeName: string, firstOnly: boolean) => Promise>; - getFirst: (storeName: string) => Promise; - getItem: (storeName: string, target: any) => Promise; - filterBy: (storeName: string, by: string) => Promise; - addItem: (storeName: string, target) => Promise; - addBulk: (storeName: string, target, overwrite: boolean) => Promise; - updateItem: (storeName: string, target) => Promise; - deleteItem: (storeName: string, target) => Promise; - deleteBulk: (storeName: string, value: any, condition?: 'lowerBound' | 'upperBound') => Promise; - trimItems: (storeName: string, length: number) => Promise; - count: (storeName: string) => Promise; - clear: (storeName: string) => void; - destroy: () => void; -} +import { isObject } from '../utilities' type Error = { name: string; message: string; } -export { - IStorage, Error +enum KeyRangeCondition { + LowerBound = 'lowerBound', + UpperBound = 'upperBound' } + +type StoredValue = string | number + +type StoredRecordId = StoredValue | Array + +type StoredRecord = Record> + +interface IStorage { + getAll: (storeName: string, firstOnly?: boolean) => Promise>; + getFirst: (storeName: string) => Promise>; + getItem: (storeName: string, id: StoredRecordId) => Promise; + filterBy: (storeName: string, by: StoredValue) => Promise>; + addItem: (storeName: string, target: StoredRecord) => Promise; + addBulk: (storeName: string, records: Array, overwrite: boolean) => Promise>; + updateItem: (storeName: string, target: StoredRecord) => Promise; + deleteItem: (storeName: string, id: StoredRecordId) => Promise; + deleteBulk: (storeName: string, value: StoredValue, condition?: KeyRangeCondition) => Promise>; + trimItems: (storeName: string, length: number) => Promise>; + count: (storeName: string) => Promise; + clear: (storeName: string) => Promise; + destroy: () => void; +} + +function valueIsRecord(value: StoredValue | Record): value is Record { + return isObject(value) +} + +export { IStorage, KeyRangeCondition, StoredValue, StoredRecord, StoredRecordId, Error, valueIsRecord } diff --git a/src/sdk/utilities.js b/src/sdk/utilities.js deleted file mode 100644 index 189e12c..0000000 --- a/src/sdk/utilities.js +++ /dev/null @@ -1,206 +0,0 @@ -/** - * Build human readable list - * - * @param {Array} array - * @returns {String} - */ -function buildList (array) { - if (!array.length) { - return '' - } - - if (array.length === 1) { - return array[0] - } - - const lastIndex = array.length - 1 - const firstPart = array.slice(0, lastIndex).join(', ') - - return `${firstPart} and ${array[lastIndex]}` -} - -/** - * Check if object is empty - * - * @param {Object} obj - * @returns {boolean} - */ -function isEmpty (obj) { - return !Object.keys(obj).length && obj.constructor === Object -} - -/** - * Check if value is object - * - * @param {Object} obj - * @returns {boolean} - */ -function isObject (obj) { - return typeof obj === 'object' && obj !== null && !(obj instanceof Array) -} - -/** - * Check if string is valid json - * - * @param {string} string - * @returns {boolean} - * @private - */ -function isValidJson (string) { - try { - const json = JSON.parse(string) - return isObject(json) - } catch (e) { - return false - } -} - -/** - * Find index of an element in the list and return it - * - * @param {Array} array - * @param {string|Array} key - * @param {*} value - * @returns {Number} - */ -function findIndex (array, key, value) { - - function isEqual (item) { - return (key instanceof Array) - ? key.every(k => item[k] === value[k]) - : (item[key] === value) - } - - for (let i = 0; i < array.length; i += 1) { - if (isEqual(array[i])) { - return i - } - } - - return -1 -} - -/** - * Convert array with key/value item structure into key/value pairs object - * - * @param {Array} array - * @return {Array} array - */ -function convertToMap (array = []) { - return array.reduce((acc, o) => ({...acc, [o.key]: o.value}), {}) -} - -/** - * Find intersecting values of provided array against given values - * - * @param {Array} array - * @param {Array} values - * @returns {Array} - */ -function intersection (array = [], values = []) { - return array.filter(item => values.indexOf(item) !== -1) -} - -/** - * Check if particular url is a certain request - * - * @param {string} url - * @param {string} requestName - * @returns {boolean} - */ -function isRequest (url, requestName) { - const regex = new RegExp(`\\/${requestName}(\\/.*|\\?.*){0,1}$`) - return regex.test(url) -} - -/** - * Extract the host name for the url - * - * @param url - * @returns {string} - */ -function getHostName (url = '') { - return url.replace(/^(http(s)*:\/\/)*(www\.)*/, '').split('/')[0].split('?')[0] -} - -/** - * Transform array entry into object key:value pair entry - * - * @param {Object} acc - * @param {string} key - * @param {string} value - * @returns {Object} - */ -function reducer (acc, [key, value]) { - return {...acc, [key]: value} -} - -/** - * Extract enumerable properties in requested format from the object - * or use built-in if available - * - * @param {Object} object - * @param {string} what - * @returns {Array} - * @private - */ -function _objectExtract (object = {}, what) { - const extractMap = { - entries: key => [key, object[key]], - values: key => object[key] - } - - return Object[what] - ? Object[what](object) - : Object.keys(object).map(extractMap[what]) -} - -/** - * Extracts object entries in the [key, value] format - * - * @param {Object} object - * @returns {Array} - */ -function entries (object) { - return _objectExtract(object, 'entries') -} - -/** - * Extracts object values - * - * @param {Object} object - * @returns {Array} - */ -function values (object) { - return _objectExtract(object, 'values') -} - -/** - * Check if value is empty in any way (empty object, false value, zero) and use it as predicate method - * - * @param {*} value - * @returns {boolean} - */ -function isEmptyEntry (value) { - if (isObject(value)) { - return !isEmpty(value) - } - - return !!value || (value === 0) -} - -export { - buildList, - isEmpty, - isObject, - isValidJson, - findIndex, - convertToMap, - intersection, - isRequest, - getHostName, - reducer, - entries, - values, - isEmptyEntry -} diff --git a/src/sdk/utilities.ts b/src/sdk/utilities.ts new file mode 100644 index 0000000..2939702 --- /dev/null +++ b/src/sdk/utilities.ts @@ -0,0 +1,140 @@ +/** + * Build human readable list + */ +function buildList(array: Array): string { + if (!array.length) { + return '' + } + + if (array.length === 1) { + return `${array[0]}` + } + + const lastIndex = array.length - 1 + const firstPart = array.slice(0, lastIndex).join(', ') + + return `${firstPart} and ${array[lastIndex]}` +} + +/** + * Check if object is empty + */ +function isEmpty(obj: Record): boolean { + return !Object.keys(obj).length && obj.constructor === Object +} + +/** + * Check if value is object + */ +function isObject(obj: any): boolean { // eslint-disable-line @typescript-eslint/no-explicit-any + return typeof obj === 'object' && obj !== null && !(obj instanceof Array) +} + +/** + * Check if string is valid json + */ +function isValidJson(string: string): boolean { + try { + const json = JSON.parse(string) + return isObject(json) + } catch (e) { + return false + } +} + +/** + * Find index of an element in the list and return it + */ +function findIndex>(array: Array, key: K | Array, target: T): number { + + function isEqual(item: T) { + return (Array.isArray(key)) + ? key.every(k => item[k] === target[k]) + : (item[key] === target) + } + + for (let i = 0; i < array.length; i += 1) { + if (isEqual(array[i])) { + return i + } + } + + return -1 +} + +/** + * Convert array with key/value item structure into key/value pairs object + */ +function convertToMap(array: Array<{ key: string, value: T }> = []): Record { + return array.reduce((acc, o) => ({ ...acc, [o.key]: o.value }), {}) +} + +/** + * Find intersecting values of provided array against given values + */ +function intersection(array: Array = [], values: Array = []): Array { + return array.filter(item => values.indexOf(item) !== -1) +} + +/** + * Check if particular url is a certain request + */ +function isRequest(url: string, requestName: string): boolean { + const regex = new RegExp(`\\/${requestName}(\\/.*|\\?.*){0,1}$`) + return regex.test(url) +} + +/** + * Extract the host name for the url + */ +function getHostName(url = ''): string { + return url.replace(/^(http(s)*:\/\/)*(www\.)*/, '').split('/')[0].split('?')[0] +} + +/** + * Transform array entry into object key:value pair entry + */ +function reducer(acc: Record, [key, value]: [K, T]): Record { + return { ...acc, [key]: value } +} + +/** + * Extracts object entries in the [key, value] format + */ +function entries(object: Record): Array<[K, T]> { + return Object.keys(object).map((key: K) => [key, object[key]]) +} + +/** + * Extracts object values + */ +function values(object: Record): Array { + return Object.keys(object).map((key: string) => object[key]) +} + +/** + * Check if value is empty in any way (empty object, false value, zero) and use it as predicate method + */ +function isEmptyEntry(value: any): boolean { // eslint-disable-line @typescript-eslint/no-explicit-any + if (isObject(value)) { + return !isEmpty(value) + } + + return !!value || (value === 0) +} + +export { + buildList, + isEmpty, + isObject, + isValidJson, + findIndex, + convertToMap, + intersection, + isRequest, + getHostName, + reducer, + entries, + values, + isEmptyEntry +} From a353e6c27f5b4f5b23f11fb284f2b06f56567dd9 Mon Sep 17 00:00:00 2001 From: YaroslavnaMatkova Date: Tue, 15 Jun 2021 14:23:01 +0300 Subject: [PATCH 02/58] Added Jest typescript types (#77) --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index aeeb215..1c99611 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@babel/preset-typescript": "^7.12.13", "@typescript-eslint/eslint-plugin": "^4.14.2", "@typescript-eslint/parser": "^4.14.2", + "@types/jest": "^26.0.23", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "babel-loader": "^8.2.2", From a8aad9a8cb1c0e77b1a7518f3bbc23b880f0e130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 30 Jun 2021 09:13:54 +0100 Subject: [PATCH 03/58] Add external device ID documentation --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 24df2a7..057e20b 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,28 @@ A custom namespace for SDK data storage. If there are multiple applications on t Please note it's possible to set custom namespace for existing storage with default name, all data will be preserved and moved to the custom namespace. Once custom namespace is set it's not possible to rename it without data loss. +**externalDeviceId** `string` + +> **Note** If you want to use external device IDs, please contact your Adjust representative. They will talk you through the best approach for your use case. + +An external device identifier is a custom value that you can assign to a device or user. They can help you to recognize users across sessions and platforms. They can also help you to deduplicate installs by user so that a user isn't counted as multiple new installs. + +You can also use an external device ID as a custom identifier for a device. This can be useful if you use these identifiers elsewhere and want to keep continuity. + +Check out our [external device identifiers article](https://help.adjust.com/en/article/external-device-identifiers) for more information. + +> **Note** This setting requires Adjust SDK v5.1.0 or later. + +```js +Adjust.initSdk({ + // other initialisation options go here + externalDeviceId: 'YOUR_EXTERNAL_DEVICE_ID', // optional +}); +``` + +> **Important**: You need to make sure this ID is **unique to the user or device** depending on your use-case. Using the same ID across different users or devices could lead to duplicated data. Talk to your Adjust representative for more information. + +If you want to use the external device ID in your business analytics, you can pass it as a callback parameter. See the section on [global callback parameters](#global-callback-parameters) for more information. ## Event tracking From 73584e6830856aee6d989530d2fb69949918024c Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Thu, 24 Jun 2021 23:39:38 +0300 Subject: [PATCH 04/58] updated project --- dist/adjust-latest.d.ts | 32 +- dist/adjust-latest.js | 2824 +++++++++++++++----------- dist/adjust-latest.min.js | 4 +- dist/sdk.snippet.min.js | 2 +- package-lock.json | 318 +++ package.json | 2 +- src/demo/tabs/tabs.js | 3 + src/sdk/main.js | 16 + src/sdk/smart-banner/smart-banner.ts | 57 + src/sdk/smart-banner/styles.scss | 37 + src/sdk/smart-banner/template.html | 8 + src/sdk/smart-banner/typings.d.ts | 4 + src/sdk/snippet.js | 5 +- webpack.demo.config.js | 2 +- webpack.sdk.config.js | 20 +- 15 files changed, 2126 insertions(+), 1208 deletions(-) create mode 100644 src/sdk/smart-banner/smart-banner.ts create mode 100644 src/sdk/smart-banner/styles.scss create mode 100644 src/sdk/smart-banner/template.html create mode 100644 src/sdk/smart-banner/typings.d.ts diff --git a/dist/adjust-latest.d.ts b/dist/adjust-latest.d.ts index b90a01a..b16d54b 100644 --- a/dist/adjust-latest.d.ts +++ b/dist/adjust-latest.d.ts @@ -290,6 +290,33 @@ function gdprForgetMe(): void */ function disableThirdPartySharing(): void +interface SmartBannerOptions { + + /** Application Web token to initialise Smart Banner */ + appWebToken: string +} + +/** + * Initiate Smart Banner. + * + * This method gets Smart Banner data and creates Smart Banner UI. + * + * @param {string} appWebToken Options to initiate the SDK instance. + * + * @example + * Adjust.initSmartBanner({ + * appWebToken: 'YOUR_APP_WEB_TOKEN' + * }); + */ +function initSmartBanner(options: SmartBannerOptions): void + +/** + * Shows Smart Banner + */ +function showSmartBanner(): void + +function hideSmartBanner(): void + const Adjust = { initSdk, trackEvent, @@ -304,7 +331,10 @@ const Adjust = { stop, restart, gdprForgetMe, - disableThirdPartySharing + disableThirdPartySharing, + initSmartBanner, + showSmartBanner, + hideSmartBanner, } export default Adjust diff --git a/dist/adjust-latest.js b/dist/adjust-latest.js index b2f959d..bc01b6e 100644 --- a/dist/adjust-latest.js +++ b/dist/adjust-latest.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 20); +/******/ return __webpack_require__(__webpack_require__.s = 23); /******/ }) /************************************************************************/ /******/ ([ @@ -105,9 +105,13 @@ function ownKeys(object, enumerableOnly) { if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); + + if (enumerableOnly) { + symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + } + keys.push.apply(keys, symbols); } @@ -135,24 +139,26 @@ function _objectSpread2(target) { } module.exports = _objectSpread2; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { -var arrayWithHoles = __webpack_require__(14); +var arrayWithHoles = __webpack_require__(15); -var iterableToArrayLimit = __webpack_require__(15); +var iterableToArrayLimit = __webpack_require__(16); var unsupportedIterableToArray = __webpack_require__(7); -var nonIterableRest = __webpack_require__(16); +var nonIterableRest = __webpack_require__(17); function _slicedToArray(arr, i) { return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); } module.exports = _slicedToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 2 */ @@ -174,6 +180,7 @@ function _defineProperty(obj, key, value) { } module.exports = _defineProperty; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 3 */ @@ -1353,12 +1360,25 @@ return Promise$1; //# sourceMappingURL=es6-promise.map -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12), __webpack_require__(13))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13), __webpack_require__(14))) /***/ }), /* 4 */ /***/ (function(module, exports) { +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +module.exports = _classCallCheck; +module.exports["default"] = module.exports, module.exports.__esModule = true; + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; @@ -1376,36 +1396,26 @@ function _createClass(Constructor, protoProps, staticProps) { } module.exports = _createClass; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 5 */ +/* 6 */ /***/ (function(module, exports, __webpack_require__) { -var arrayWithoutHoles = __webpack_require__(17); +var arrayWithoutHoles = __webpack_require__(18); -var iterableToArray = __webpack_require__(18); +var iterableToArray = __webpack_require__(19); var unsupportedIterableToArray = __webpack_require__(7); -var nonIterableSpread = __webpack_require__(19); +var nonIterableSpread = __webpack_require__(20); function _toConsumableArray(arr) { return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); } module.exports = _toConsumableArray; - -/***/ }), -/* 6 */ -/***/ (function(module, exports) { - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -module.exports = _classCallCheck; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 7 */ @@ -1423,6 +1433,7 @@ function _unsupportedIterableToArray(o, minLen) { } module.exports = _unsupportedIterableToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 8 */ @@ -1439,12 +1450,13 @@ function _arrayLikeToArray(arr, len) { } module.exports = _arrayLikeToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { -var objectWithoutPropertiesLoose = __webpack_require__(11); +var objectWithoutPropertiesLoose = __webpack_require__(12); function _objectWithoutProperties(source, excluded) { if (source == null) return {}; @@ -1466,6 +1478,7 @@ function _objectWithoutProperties(source, excluded) { } module.exports = _objectWithoutProperties; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 10 */ @@ -1478,21 +1491,32 @@ function _typeof(obj) { module.exports = _typeof = function _typeof(obj) { return typeof obj; }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; } else { module.exports = _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; } return _typeof(obj); } module.exports = _typeof; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), /* 11 */ /***/ (function(module, exports) { +module.exports = "
"; + +/***/ }), +/* 12 */ +/***/ (function(module, exports) { + function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; @@ -1509,9 +1533,10 @@ function _objectWithoutPropertiesLoose(source, excluded) { } module.exports = _objectWithoutPropertiesLoose; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 12 */ +/* 13 */ /***/ (function(module, exports) { // shim for using process in browser @@ -1701,7 +1726,7 @@ process.umask = function() { return 0; }; /***/ }), -/* 13 */ +/* 14 */ /***/ (function(module, exports) { var g; @@ -1727,7 +1752,7 @@ module.exports = g; /***/ }), -/* 14 */ +/* 15 */ /***/ (function(module, exports) { function _arrayWithHoles(arr) { @@ -1735,20 +1760,24 @@ function _arrayWithHoles(arr) { } module.exports = _arrayWithHoles; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 15 */ +/* 16 */ /***/ (function(module, exports) { function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; var _arr = []; var _n = true; var _d = false; - var _e = undefined; + + var _s, _e; try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; @@ -1768,9 +1797,10 @@ function _iterableToArrayLimit(arr, i) { } module.exports = _iterableToArrayLimit; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 16 */ +/* 17 */ /***/ (function(module, exports) { function _nonIterableRest() { @@ -1778,9 +1808,10 @@ function _nonIterableRest() { } module.exports = _nonIterableRest; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 17 */ +/* 18 */ /***/ (function(module, exports, __webpack_require__) { var arrayLikeToArray = __webpack_require__(8); @@ -1790,19 +1821,21 @@ function _arrayWithoutHoles(arr) { } module.exports = _arrayWithoutHoles; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 18 */ +/* 19 */ /***/ (function(module, exports) { function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } module.exports = _iterableToArray; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 19 */ +/* 20 */ /***/ (function(module, exports) { function _nonIterableSpread() { @@ -1810,9 +1843,106 @@ function _nonIterableSpread() { } module.exports = _nonIterableSpread; +module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 20 */ +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__(22)(false); +// imports + + +// module +exports.push([module.i, ".flex-box-column{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-moz-box-direction:normal;box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical}.flex-box-row{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-direction:normal;-moz-box-direction:normal;box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;box-orient:horizontal}.flex-auto{-webkit-box-flex:0 0 auto;-moz-box-flex:0 0 auto;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.flex-one{-webkit-box-flex:1 1 0%;-moz-box-flex:1 1 0%;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-height:0;min-width:0}.flex-two{-webkit-box-flex:2;-moz-box-flex:2;-webkit-flex:2;-ms-flex:2;flex:2}.banner{width:100vw;position:fixed;left:0;bottom:0;background-color:white}.banner .banner-body{align-items:center;margin:2px 8px}.banner .banner-body .banner-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.banner .banner-body button{background-color:#00bed5;color:white;border:none;border-radius:2px;padding:8px 10px;display:inline-block;vertical-align:middle;text-transform:uppercase;text-align:center;font-size:.9em;letter-spacing:.02em;cursor:pointer}\n", ""]); + +// exports + + +/***/ }), +/* 22 */ +/***/ (function(module, exports) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +module.exports = function(useSourceMap) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + if(item[2]) { + return "@media " + item[2] + "{" + content + "}"; + } else { + return content; + } + }).join(""); + }; + + // import a list of modules into the list + list.i = function(modules, mediaQuery) { + if(typeof modules === "string") + modules = [[null, modules, ""]]; + var alreadyImportedModules = {}; + for(var i = 0; i < this.length; i++) { + var id = this[i][0]; + if(typeof id === "number") + alreadyImportedModules[id] = true; + } + for(i = 0; i < modules.length; i++) { + var item = modules[i]; + // skip already imported module + // this implementation is not 100% perfect for weird media query combinations + // when a module is imported multiple times with different media queries. + // I hope this will never occur (Hey this way we have smaller bundles) + if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { + if(mediaQuery && !item[2]) { + item[2] = mediaQuery; + } else if(mediaQuery) { + item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; + } + list.push(item); + } + } + }; + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' + }); + + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} + +// Adapted from convert-source-map (MIT) +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + + return '/*# ' + data + ' */'; +} + + +/***/ }), +/* 23 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1832,7 +1962,7 @@ var slicedToArray = __webpack_require__(1); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/toConsumableArray.js -var toConsumableArray = __webpack_require__(5); +var toConsumableArray = __webpack_require__(6); var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray); // CONCATENATED MODULE: ./src/sdk/constants.js @@ -1864,7 +1994,7 @@ var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty); var helpers_typeof = __webpack_require__(10); var typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof); -// CONCATENATED MODULE: ./src/sdk/utilities.js +// CONCATENATED MODULE: ./src/sdk/utilities.ts @@ -1872,17 +2002,18 @@ var typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof); /** * Build human readable list - * - * @param {Array} array - * @returns {String} */ -function buildList(array) { +function buildList(array +/*: Array*/ +) +/*: string*/ +{ if (!array.length) { return ''; } if (array.length === 1) { - return array[0]; + return "".concat(array[0]); } var lastIndex = array.length - 1; @@ -1891,36 +2022,39 @@ function buildList(array) { } /** * Check if object is empty - * - * @param {Object} obj - * @returns {boolean} */ -function isEmpty(obj) { +function isEmpty(obj +/*: Record*/ +) +/*: boolean*/ +{ return !Object.keys(obj).length && obj.constructor === Object; } /** * Check if value is object - * - * @param {Object} obj - * @returns {boolean} */ -function isObject(obj) { +function isObject(obj +/*: any*/ +) +/*: boolean*/ +{ + // eslint-disable-line @typescript-eslint/no-explicit-any return typeof_default()(obj) === 'object' && obj !== null && !(obj instanceof Array); } /** * Check if string is valid json - * - * @param {string} string - * @returns {boolean} - * @private */ -function isValidJson(string) { +function isValidJson(string +/*: string*/ +) +/*: boolean*/ +{ try { var json = JSON.parse(string); return isObject(json); @@ -1930,19 +2064,26 @@ function isValidJson(string) { } /** * Find index of an element in the list and return it - * - * @param {Array} array - * @param {string|Array} key - * @param {*} value - * @returns {Number} */ -function findIndex(array, key, value) { - function isEqual(item) { - return key instanceof Array ? key.every(function (k) { - return item[k] === value[k]; - }) : item[key] === value; +function findIndex +/*:: >*/ +(array +/*: Array*/ +, key +/*: K | Array*/ +, target +/*: T*/ +) +/*: number*/ +{ + function isEqual(item + /*: T*/ + ) { + return Array.isArray(key) ? key.every(function (k) { + return item[k] === target[k]; + }) : item[key] === target; } for (var i = 0; i < array.length; i += 1) { @@ -1955,131 +2096,132 @@ function findIndex(array, key, value) { } /** * Convert array with key/value item structure into key/value pairs object - * - * @param {Array} array - * @return {Array} array */ -function convertToMap() { - var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; +function convertToMap +/*:: */ +() +/*: Record*/ +{ + var array + /*: Array<{ key: string, value: T }>*/ + = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return array.reduce(function (acc, o) { return objectSpread2_default()(objectSpread2_default()({}, acc), {}, defineProperty_default()({}, o.key, o.value)); }, {}); } /** * Find intersecting values of provided array against given values - * - * @param {Array} array - * @param {Array} values - * @returns {Array} */ -function intersection() { - var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; +function intersection +/*:: */ +() +/*: Array*/ +{ + var array + /*: Array*/ + = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var values + /*: Array*/ + = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; return array.filter(function (item) { return values.indexOf(item) !== -1; }); } /** * Check if particular url is a certain request - * - * @param {string} url - * @param {string} requestName - * @returns {boolean} */ -function isRequest(url, requestName) { +function isRequest(url +/*: string*/ +, requestName +/*: string*/ +) +/*: boolean*/ +{ var regex = new RegExp("\\/".concat(requestName, "(\\/.*|\\?.*){0,1}$")); return regex.test(url); } /** * Extract the host name for the url - * - * @param url - * @returns {string} */ -function getHostName() { +function getHostName() +/*: string*/ +{ var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; return url.replace(/^(http(s)*:\/\/)*(www\.)*/, '').split('/')[0].split('?')[0]; } /** * Transform array entry into object key:value pair entry - * - * @param {Object} acc - * @param {string} key - * @param {string} value - * @returns {Object} */ -function reducer(acc, _ref) { +function reducer +/*:: */ +(acc +/*: Record*/ +, _ref) +/*: Record*/ +{ var _ref2 = slicedToArray_default()(_ref, 2), key = _ref2[0], value = _ref2[1]; return objectSpread2_default()(objectSpread2_default()({}, acc), {}, defineProperty_default()({}, key, value)); } -/** - * Extract enumerable properties in requested format from the object - * or use built-in if available - * - * @param {Object} object - * @param {string} what - * @returns {Array} - * @private - */ - - -function _objectExtract() { - var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var what = arguments.length > 1 ? arguments[1] : undefined; - var extractMap = { - entries: function entries(key) { - return [key, object[key]]; - }, - values: function values(key) { - return object[key]; - } - }; - return Object[what] ? Object[what](object) : Object.keys(object).map(extractMap[what]); -} /** * Extracts object entries in the [key, value] format - * - * @param {Object} object - * @returns {Array} */ -function entries(object) { - return _objectExtract(object, 'entries'); +function entries +/*:: */ +(object +/*: Record*/ +) +/*: Array<[K, T]>*/ +{ + return Object.keys(object).map(function (key + /*: K*/ + ) { + return [key, object[key]]; + }); } /** * Extracts object values - * - * @param {Object} object - * @returns {Array} */ -function utilities_values(object) { - return _objectExtract(object, 'values'); +function utilities_values +/*:: */ +(object +/*: Record*/ +) +/*: Array*/ +{ + return Object.keys(object).map(function (key + /*: string*/ + ) { + return object[key]; + }); } /** * Check if value is empty in any way (empty object, false value, zero) and use it as predicate method - * - * @param {*} value - * @returns {boolean} */ -function isEmptyEntry(value) { +function isEmptyEntry(value +/*: any*/ +) +/*: boolean*/ +{ + // eslint-disable-line @typescript-eslint/no-explicit-any if (isObject(value)) { return !isEmpty(value); } @@ -2293,7 +2435,8 @@ var Logger = { -/*:: import { type BaseParamsT, type CustomConfigT, type InitOptionsT, type BaseParamsListT, type BaseParamsMandatoryListT, type CustomConfigListT } from './types';*/ +/*:: // +import { type BaseParamsT, type CustomConfigT, type InitOptionsT, type BaseParamsListT, type BaseParamsMandatoryListT, type CustomConfigListT } from './types';*/ @@ -2488,24 +2631,45 @@ var Config = objectSpread2_default()(objectSpread2_default()({}, _baseConfig), { destroy: destroy }); -/* harmony default export */ var config = (Config); -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/classCallCheck.js -var classCallCheck = __webpack_require__(6); -var classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck); - -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/createClass.js -var createClass = __webpack_require__(4); -var createClass_default = /*#__PURE__*/__webpack_require__.n(createClass); - +/* harmony default export */ var sdk_config = (Config); // CONCATENATED MODULE: ./src/sdk/storage/scheme.ts var _values2; -var _queueName = 'q'; +var StoreName; + +(function (StoreName) { + StoreName["Queue"] = "queue"; + StoreName["ActivityState"] = "activityState"; + StoreName["GlobalParams"] = "globalParams"; + StoreName["EventDeduplication"] = "eventDeduplication"; +})(StoreName || (StoreName = {})); + +var PreferencesStoreName; + +(function (PreferencesStoreName) { + PreferencesStoreName["Preferences"] = "preferences"; +})(PreferencesStoreName || (PreferencesStoreName = {})); + +var ShortStoreName; + +(function (ShortStoreName) { + ShortStoreName["Queue"] = "q"; + ShortStoreName["ActivityState"] = "as"; + ShortStoreName["GlobalParams"] = "gp"; + ShortStoreName["EventDeduplication"] = "ed"; +})(ShortStoreName || (ShortStoreName = {})); + +var ShortPreferencesStoreName; + +(function (ShortPreferencesStoreName) { + ShortPreferencesStoreName["Preferences"] = "p"; +})(ShortPreferencesStoreName || (ShortPreferencesStoreName = {})); + var _queueScheme -/*: StoreScheme*/ +/*: StoreOptions*/ = { keyPath: 'timestamp', autoIncrement: false, @@ -2548,9 +2712,8 @@ var _queueScheme } } }; -var _activityStateName = 'as'; var _activityStateScheme -/*: StoreScheme*/ +/*: StoreOptions*/ = { keyPath: 'uuid', autoIncrement: false, @@ -2596,9 +2759,8 @@ var _activityStateScheme } } }; -var _globalParamsName = 'gp'; var _globalParamsScheme -/*: StoreScheme*/ +/*: StoreOptions*/ = { keyPath: 'keyType', autoIncrement: false, @@ -2619,9 +2781,8 @@ var _globalParamsScheme } } }; -var _eventDeduplicationName = 'ed'; var _eventDeduplicationScheme -/*: StoreScheme*/ +/*: StoreOptions*/ = { keyPath: 'internalId', autoIncrement: true, @@ -2630,9 +2791,8 @@ var _eventDeduplicationScheme id: 'i' } }; -var _preferencesName = 'p'; var _preferencesScheme -/*: StoreScheme*/ +/*: StoreOptionsOptionalKey*/ = { fields: { thirdPartySharingDisabled: { @@ -2673,42 +2833,77 @@ var scheme_scheme /*: Scheme*/ = { queue: { - name: _queueName, + name: ShortStoreName.Queue, scheme: _queueScheme }, activityState: { - name: _activityStateName, + name: ShortStoreName.ActivityState, scheme: _activityStateScheme }, globalParams: { - name: _globalParamsName, + name: ShortStoreName.GlobalParams, scheme: _globalParamsScheme }, eventDeduplication: { - name: _eventDeduplicationName, + name: ShortStoreName.EventDeduplication, scheme: _eventDeduplicationScheme }, preferences: { - name: _preferencesName, + name: ShortPreferencesStoreName.Preferences, scheme: _preferencesScheme, permanent: true } }; + +function isPredefinedValuesField(field +/*: Maybe*/ +) +/*: field is StoreFieldPredefinedValues*/ +{ + return !!field && Object.prototype.hasOwnProperty.call(field, 'values'); +} + +function isNestingStoreField(field +/*: Maybe*/ +) +/*: field is StoreFieldNestingFields*/ +{ + return !!field && Object.prototype.hasOwnProperty.call(field, 'keys'); +} + +function isCompositeKeyStoreField(field +/*: Maybe*/ +) +/*: field is StoreFieldCompositeKey*/ +{ + return !!field && Object.prototype.hasOwnProperty.call(field, 'composite'); +} + +function isComplexStoreField(field +/*: Maybe*/ +) +/*: field is StoreFieldComplex*/ +{ + return !!field && typeof field !== 'string'; +} + + /* harmony default export */ var storage_scheme = (scheme_scheme); // CONCATENATED MODULE: ./src/sdk/storage/scheme-map.ts + /** * Cast value into it's original type - * - * @param {string} value - * @returns {*} - * @private */ - -function _parseValue(value) { +function _parseValue(value +/*: string*/ +) +/*: any*/ +{ + // eslint-disable-line @typescript-eslint/no-explicit-any try { return JSON.parse(value); } catch (e) { @@ -2717,14 +2912,14 @@ function _parseValue(value) { } /** * Flip key/value pairs - * - * @param {Object} obj - * @returns {Object} - * @private */ -function _flipObject(obj) { +function _flipObject(obj +/*: Record*/ +) +/*: Record*/ +{ return entries(obj).map(function (_ref) { var _ref2 = slicedToArray_default()(_ref, 2), key = _ref2[0], @@ -2736,44 +2931,48 @@ function _flipObject(obj) { /** * Flip store name definition names: * - short key pointing the long one along with additional configuration - * - * @param {Object} obj - * @returns {Object} - * @private */ -function _flipStoreNames(obj) { - return entries(obj).map(function (_ref3) { +function _flipStoreNames(obj +/*: StoresConfigurationMap*/ +) +/*: StoresConfigurationMapFlipped*/ +{ + var flippedConfigs + /*: Array<[ShortStoreNames, StoreConfigurationFlipped]>*/ + = entries(obj).map(function (_ref3) { var _ref4 = slicedToArray_default()(_ref3, 2), name = _ref4[0], options = _ref4[1]; - return [options.name, { + var config = { name: name, permanent: options.permanent - }]; - }).reduce(reducer, {}); + }; + return [options.name, config]; + }); + return flippedConfigs.reduce(reducer, {}); } /** * Flip store scheme values - * - * @param {string} storeName - * @param {string} key - * @param {Object} scheme - * @returns {Object} - * @private */ -function _flipStoreScheme(storeName, key, scheme) { - var values = scheme.values ? { +function _flipStoreScheme(storeName +/*: StoreNames*/ +, key +/*: string*/ +, scheme +/*: StoreFieldScheme*/ +) { + var values = isPredefinedValuesField(scheme) ? { values: _flipObject(scheme.values) } : {}; - var keys = scheme.keys ? { + var keys = isNestingStoreField(scheme) ? { keys: _flipScheme(storeName, scheme.keys) } : {}; - var composite = scheme.composite ? { + var composite = isCompositeKeyStoreField(scheme) ? { composite: scheme.composite.map(function (key) { return _getShortKey(storeName, key); }) @@ -2784,91 +2983,92 @@ function _flipStoreScheme(storeName, key, scheme) { } /** * Flip general scheme recursivelly - * - * @param {string} storeName - * @param {Object} fieldsScheme - * @returns {Object} - * @private */ -function _flipScheme(storeName, fieldsScheme) { +function _flipScheme(storeName +/*: StoreNames*/ +, fieldsScheme +/*: StoreFields*/ +) { return entries(fieldsScheme).map(function (_ref5) { var _ref6 = slicedToArray_default()(_ref5, 2), key = _ref6[0], scheme = _ref6[1]; - return scheme.key ? [scheme.key, _flipStoreScheme(storeName, key, scheme)] : [scheme, key]; + return isComplexStoreField(scheme) ? [scheme.key, _flipStoreScheme(storeName, key, scheme)] : [scheme, key]; }).reduce(reducer, {}); } /** * Extend base scheme with some more maps for encoding - * - * @returns {Object} - * @private */ -function _prepareLeft() { - return entries(storage_scheme).map(function (_ref7) { +function _prepareLeft() +/*: StoreScheme*/ +{ + var storesOptions + /*: Array<[StoreNames, StoreOptionsOptionalKey]>*/ + = entries(storage_scheme).map(function (_ref7) { var _ref8 = slicedToArray_default()(_ref7, 2), storeName = _ref8[0], store = _ref8[1]; - return [storeName, { + var options + /*: StoreOptionsOptionalKey*/ + = { keyPath: store.scheme.keyPath, autoIncrement: store.scheme.autoIncrement, index: store.scheme.index, fields: store.scheme.fields - }]; - }).reduce(reducer, {}); + }; + return [storeName, options]; + }); + return storesOptions.reduce(reducer, {}); } /** * Prepare scheme for decoding - * - * @returns {Object} - * @private */ -function _prepareRight() { - return entries(Left).map(function (_ref9) { +function _prepareRight() +/*: StoreScheme*/ +{ + var storesOptionsEncoded + /*: Array<[StoreNames, StoreOptionsOptionalKey]>*/ + = entries(Left).map(function (_ref9) { var _ref10 = slicedToArray_default()(_ref9, 2), storeName = _ref10[0], storeScheme = _ref10[1]; - return [storeName, { + var options + /*: StoreOptionsOptionalKey*/ + = { keyPath: _getShortKey(storeName, storeScheme.keyPath), autoIncrement: storeScheme.autoIncrement, index: _getShortKey(storeName, storeScheme.index), fields: _flipScheme(storeName, storeScheme.fields) - }]; - }).reduce(reducer, {}); + }; + return [storeName, options]; + }); + return storesOptionsEncoded.reduce(reducer, {}); } /** * Get available values for encoding - * - * @returns {Object} - * @private */ -function _getValuesMap() { +function _getValuesMap() +/*: Record*/ +{ + // all pairs of predefined keys and values such as {GET: 1} return entries(storage_scheme).reduce(function (acc, _ref11) { var _ref12 = slicedToArray_default()(_ref11, 2), store = _ref12[1]; return acc.concat(store.scheme.fields); }, []).map(function (scheme) { - return entries(scheme).filter(function (_ref13) { - var _ref14 = slicedToArray_default()(_ref13, 2), - map = _ref14[1]; - - return map.values; - }).map(function (_ref15) { - var _ref16 = slicedToArray_default()(_ref15, 2), - map = _ref16[1]; - + return utilities_values(scheme).filter(isPredefinedValuesField).map(function (map) { return entries(map.values); }).reduce(function (acc, map) { return acc.concat(map); @@ -2879,39 +3079,50 @@ function _getValuesMap() { } /** * Get short key version of a specified key - * - * @param {string} storeName - * @param {string} key - * @returns {string} - * @private */ -function _getShortKey(storeName, key) { +function _getShortKey(storeName +/*: StoreNames*/ +, key +/*: Maybe*/ +) +/*: Maybe*/ +{ + if (!key) { + return undefined; + } + var map = storage_scheme[storeName].scheme.fields[key]; - return map ? map.key || map : key; + + if (isComplexStoreField(map)) { + return map.key; + } + + return map || key; } /** * Get store names and their general configuration (if store is permanent or not) - * - * @returns {Object} - * @private */ function _getStoreNames() -/*: {[shortName: string]: {name: string; permanent: boolean}}*/ +/*: StoresConfigurationMap*/ { - return entries(storage_scheme).map(function (_ref17) { - var _ref18 = slicedToArray_default()(_ref17, 2), - storeName = _ref18[0], - scheme = _ref18[1]; + var storeNames + /*: Array<[StoreName, StoreConfiguration]>*/ + = entries(storage_scheme).map(function (_ref13) { + var _ref14 = slicedToArray_default()(_ref13, 2), + name = _ref14[0], + store = _ref14[1]; - return [storeName, { - name: scheme.name, - permanent: scheme.permanent - }]; - }).reduce(reducer, {}); + var config = { + name: store.name, + permanent: store.permanent + }; + return [name, config]; + }); + return storeNames.reduce(reducer, {}); } var Left = _prepareLeft(); @@ -2920,17 +3131,241 @@ var Right = _prepareRight(); var Values = _getValuesMap(); -var StoreNames = _getStoreNames(); +var StoreNamesAndConfigs = _getStoreNames(); /* harmony default export */ var scheme_map = ({ left: Left, right: Right, values: Values, storeNames: { - left: StoreNames, - right: _flipStoreNames(StoreNames) + left: StoreNamesAndConfigs, + right: _flipStoreNames(StoreNamesAndConfigs) } }); +// CONCATENATED MODULE: ./src/sdk/storage/types.ts +var _Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; + + +var KeyRangeCondition; + +(function (KeyRangeCondition) { + KeyRangeCondition["LowerBound"] = "lowerBound"; + KeyRangeCondition["UpperBound"] = "upperBound"; +})(KeyRangeCondition || (KeyRangeCondition = {})); + +function valueIsRecord(value +/*: StoredValue | Record*/ +) +/*: value is Record*/ +{ + return isObject(value); +} + + +// CONCATENATED MODULE: ./src/sdk/storage/converter.ts + + + + + + + +var Direction; + +(function (Direction) { + Direction["right"] = "right"; + Direction["left"] = "left"; +})(Direction || (Direction = {})); + +/** + * Get value from the map if available + */ +function _getValue(map +/*: Nullable>*/ +, value +/*: StoredValue*/ +) +/*: StoredValue*/ +{ + return map ? map[value] !== undefined ? map[value] : value : value; +} +/** + * Convert key and value by defined scheme + */ + + +function _convert(storeName +/*: StoreNameType*/ +, dir +/*: Direction*/ +, key +/*: string*/ +, value +/*: StoredValue | StoredRecord*/ +, scheme +/*: StoreFieldScheme*/ +) +/*: [string, unknown]*/ +{ + if (!scheme) { + return [key, value]; + } + + var encodedKey = isComplexStoreField(scheme) ? scheme.key : scheme; + + if (valueIsRecord(value)) { + var keys = isNestingStoreField(scheme) ? scheme.keys : null; + return [encodedKey, convertRecord(storeName, dir, value, keys)]; + } + + var valuesMap = isPredefinedValuesField(scheme) ? scheme.values : null; + return [encodedKey, _getValue(valuesMap, value)]; +} +/** + * Convert record by defined direction and scheme + */ + + +/** + * Convert record by defined direction and scheme + * Note: the function signature is duplicated because TS hides function implementation + */ +function convertRecord(storeName +/*: StoreNameType*/ +, dir +/*: Direction*/ +, record +/*: Maybe*/ +, scheme +/*: StoreFields*/ +) +/*: Maybe*/ +{ + if (!record) { + return undefined; + } + + var _scheme + /*: StoreFields*/ + = scheme || scheme_map[dir][convertStoreName(storeName, Direction.right)].fields; + + return entries(record).map(function (_ref) { + var _ref2 = slicedToArray_default()(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + + return _convert(storeName, dir, key, value, _scheme[key]); + }).reduce(function (acc, _ref3) { + var _ref4 = slicedToArray_default()(_ref3, 2), + key = _ref4[0], + value = _ref4[1]; + + return objectSpread2_default()(objectSpread2_default()({}, acc), {}, defineProperty_default()({}, key, value)); + }, {}); +} +/** + * Convert records by defined direction + */ + + +function convertRecords(storeName +/*: StoreNameType*/ +, dir +/*: Direction*/ +) +/*: Array*/ +{ + var records + /*: Array*/ + = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + return records.map(function (record) { + return convertRecord(storeName, dir, record); + }); +} +/** + * Convert values by defined direction + */ + + +function convertValues(storeName +/*: StoreNameType*/ +, dir +/*: Direction*/ +, target +/*: StoredRecordId*/ +) +/*: StoredValue | Array*/ +{ + var scheme + /*: StoreOptions*/ + = scheme_map[dir][convertStoreName(storeName, Direction.right)]; + var keyPathScheme = scheme.fields[scheme.keyPath]; + var values = target instanceof Array ? target.slice() : [target]; + var keys = isCompositeKeyStoreField(keyPathScheme) ? keyPathScheme.composite : [scheme.keyPath]; + var converted = keys.map(function (key + /*: string*/ + , index + /*: number*/ + ) { + var field = scheme.fields[key]; + var predefinedValuesMap = isPredefinedValuesField(field) ? field.values : null; + return _getValue(predefinedValuesMap, values[index]); + }); + return converted.length === 1 ? converted[0] : converted; +} +/** + * Encode value by defined scheme + */ + + +function encodeValue(target +/*: StoredValue*/ +) +/*: StoredValue*/ +{ + return scheme_map.values[target] || target; +} +/** + * Convert store name by defined direction + */ + + +function convertStoreName(storeName +/*: StoreNameType*/ +, dir +/*: Direction*/ +) +/*: StoreNameType*/ +{ + return (scheme_map.storeNames[dir][storeName] || {}).name || storeName; +} +/** + * Decode error message by replacing short store name with long readable one + */ + + +function decodeErrorMessage(storeName +/*: ShortStoreNames*/ +, error +/*: Error*/ +) +/*: Error*/ +{ + return { + name: error.name, + message: error.message.replace("\"".concat(storeName, "\""), convertStoreName(storeName, Direction.right)) + }; +} + + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/classCallCheck.js +var classCallCheck = __webpack_require__(4); +var classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/createClass.js +var createClass = __webpack_require__(5); +var createClass_default = /*#__PURE__*/__webpack_require__.n(createClass); + // CONCATENATED MODULE: ./src/sdk/time.js /** * Prepend zero to be used in certain format @@ -3076,7 +3511,8 @@ function timePassed(d1 // CONCATENATED MODULE: ./src/sdk/activity-state.js -/*:: import { type UrlT, type ActivityStateMapT, type CommonRequestParams } from './types';*/ +/*:: // +import { type UrlT, type ActivityStateMapT, type CommonRequestParams } from './types';*/ @@ -3142,7 +3578,7 @@ function currentSetter() { */ -function init(params +function activity_state_init(params /*: ActivityStateMapT*/ ) { _started = true; @@ -3249,7 +3685,7 @@ function _getSessionLength() /*: number*/ { var lastActive = _activityState.lastActive; - var withinWindow = timePassed(lastActive, Date.now()) < config.sessionWindow; + var withinWindow = timePassed(lastActive, Date.now()) < sdk_config.sessionWindow; var withOffset = _active || !_active && withinWindow; return (_activityState.sessionLength || 0) + (withOffset ? _getOffset() : 0); } @@ -3480,7 +3916,7 @@ var ActivityState = { currentSetter(value); }, - init: init, + init: activity_state_init, isStarted: isStarted, toForeground: toForeground, toBackground: toBackground, @@ -3495,327 +3931,6 @@ var ActivityState = { destroy: activity_state_destroy }; /* harmony default export */ var activity_state = (ActivityState); -// CONCATENATED MODULE: ./src/sdk/storage/converter.ts - - - - - -var Direction; - -(function (Direction) { - Direction["right"] = "right"; - Direction["left"] = "left"; -})(Direction || (Direction = {})); - -/** - * Get value from the map if available - * - * @private - */ -function _getValue(map, value) { - return map ? map[value] !== undefined ? map[value] : value : value; -} -/** - * Convert key and value by defined scheme - * - * @private - */ - - -function _convert(_ref) -/*: [string, any]*/ -{ - var storeName = _ref.storeName, - scheme = _ref.scheme, - dir = _ref.dir, - key = _ref.key, - value = _ref.value; - - if (!scheme) { - return [key, value]; - } - - var encodedKey = scheme.key || scheme; - - if (isObject(value)) { - return [encodedKey, convertRecord({ - storeName: storeName, - dir: dir, - record: value, - scheme: scheme.keys - })]; - } - - return [encodedKey, _getValue(scheme.values, value)]; -} -/** - * Convert record by defined direction and scheme - */ - - -function convertRecord(_ref2) { - var storeName = _ref2.storeName, - dir = _ref2.dir, - record = _ref2.record, - scheme = _ref2.scheme; - - if (!record) { - return; - } - - scheme = scheme || scheme_map[dir][convertStoreName({ - storeName: storeName, - dir: Direction.right - })].fields; - return entries(record).map(function (_ref3) { - var _ref4 = slicedToArray_default()(_ref3, 2), - key = _ref4[0], - value = _ref4[1]; - - return _convert({ - storeName: storeName, - scheme: scheme[key], - dir: dir, - key: key, - value: value - }); - }).reduce(function (acc, _ref5) { - var _ref6 = slicedToArray_default()(_ref5, 2), - key = _ref6[0], - value = _ref6[1]; - - return objectSpread2_default()(objectSpread2_default()({}, acc), {}, defineProperty_default()({}, key, value)); - }, {}); -} -/** - * Convert records by defined direction - */ - - -function convertRecords(_ref7) -/*: Array<{ [key: string]: any }>*/ -{ - var storeName = _ref7.storeName, - dir = _ref7.dir, - _ref7$records = _ref7.records, - records = _ref7$records === void 0 ? [] : _ref7$records; - return records.map(function (record) { - return convertRecord({ - storeName: storeName, - dir: dir, - record: record - }); - }); -} -/** - * Convert values by defined direction - */ - - -function convertValues(_ref8) { - var storeName = _ref8.storeName, - dir = _ref8.dir, - target = _ref8.target; - var scheme = scheme_map[dir][convertStoreName({ - storeName: storeName, - dir: Direction.right - })]; - var keyPathScheme = scheme.fields[scheme.keyPath]; - var values = target instanceof Array ? target.slice() : [target]; - var keys = keyPathScheme.composite || [scheme.keyPath]; - var converted = keys.map(function (key, index) { - return _getValue(scheme.fields[key].values, values[index]); - }); - return converted.length === 1 ? converted[0] : converted; -} -/** - * Encode value by defined scheme - */ - - -function encodeValue(target -/*: any*/ -) { - return scheme_map.values[target] || target; -} -/** - * Convert store name by defined direction - */ - - -function convertStoreName(_ref9) -/*: string*/ -{ - var storeName = _ref9.storeName, - dir = _ref9.dir; - return (scheme_map.storeNames[dir][storeName] || {}).name || storeName; -} -/** - * Decode error message by replacing short store name with long readable one - */ - - -function decodeErrorMessage(_ref10) -/*: Error*/ -{ - var storeName = _ref10.storeName, - error = _ref10.error; - return { - name: error.name, - message: error.message.replace("\"".concat(storeName, "\""), convertStoreName({ - storeName: storeName, - dir: Direction.right - })) - }; -} - - -// CONCATENATED MODULE: ./src/sdk/storage/quick-storage.ts - - - - - - - - -var quick_storage_QuickStorage = /*#__PURE__*/function () { - createClass_default()(QuickStorage, [{ - key: "read", - - /** - * Get the value for specified key - */ - value: function read(key - /*: string*/ - ) { - var raw = localStorage.getItem("".concat(this.storageName, ".").concat(key)); - var value = JSON.parse(raw || 'null'); - return (value instanceof Array ? value : convertRecord({ - storeName: this.storeNames.preferences.name, - dir: Direction.right, - record: value - })) || null; - } - /** - * Set the value for specified key - */ - - }, { - key: "write", - value: function write(key - /*: string*/ - , value - /*: any*/ - ) { - if (!value) { - localStorage.removeItem("".concat(this.storageName, ".").concat(key)); - } else { - localStorage.setItem("".concat(this.storageName, ".").concat(key), JSON.stringify(value instanceof Array ? value : convertRecord({ - storeName: this.storeNames.preferences.name, - dir: Direction.left, - record: value - }))); - } - } - /** - * Clear all data related to the sdk - */ - - }, { - key: "clear", - value: function clear() { - this.deleteData(); - } - /** - * Clear all data related to the sdk - * - * @param wipe if true then also remove permanent data such as user's preferences - */ - - }, { - key: "deleteData", - value: function deleteData() { - var _this = this; - - var wipe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - utilities_values(this.storeNames).forEach(function (store) { - if (wipe || !store.permanent) { - localStorage.removeItem("".concat(_this.storageName, ".").concat(store.name)); - } - }); - } - }]); - - function QuickStorage() { - var _this2 = this; - - classCallCheck_default()(this, QuickStorage); - - defineProperty_default()(this, "defaultName", globals.namespace); - - defineProperty_default()(this, "storageName", this.defaultName); - - defineProperty_default()(this, "storeNames", scheme_map.storeNames.left); - - defineProperty_default()(this, "storesMap", void 0); - - this.storesMap = {}; - var read = this.read.bind(this); - var write = this.write.bind(this); - utilities_values(this.storeNames).forEach(function (store) { - Object.defineProperty(_this2.storesMap, store.name, { - get: function get() { - return read(store.name); - }, - set: function set(value) { - write(store.name, value); - } - }); - }); - Object.freeze(this.storesMap); - } - /** - * Sets custom name to use in data keys and updates existing keys in localStorage - */ - - - createClass_default()(QuickStorage, [{ - key: "setCustomName", - value: function setCustomName(customName - /*: string*/ - ) { - var _this3 = this; - - if (!customName || !customName.length) { - return; - } - - var newName = "".concat(globals.namespace, "-").concat(customName); // Clone data - - utilities_values(this.storeNames).forEach(function (store) { - var key = store.name; - var rawData = localStorage.getItem("".concat(_this3.storageName, ".").concat(key)); // Get data from the store, no need to encode it - - if (rawData) { - localStorage.setItem("".concat(newName, ".").concat(key), rawData); // Put data into a new store - } - }); - this.deleteData(true); - this.storageName = newName; - } - }, { - key: "stores", - get: function get() { - return this.storesMap; - } - }]); - - return QuickStorage; -}(); - -/* harmony default export */ var quick_storage = (new quick_storage_QuickStorage()); // CONCATENATED MODULE: ./src/sdk/pub-sub.js @@ -3955,16 +4070,160 @@ function publish */ -function pub_sub_destroy() -/*: void*/ -{ - _timeoutIds.forEach(clearTimeout); +function pub_sub_destroy() +/*: void*/ +{ + _timeoutIds.forEach(clearTimeout); + + _timeoutIds = []; + _list = {}; +} + + +// CONCATENATED MODULE: ./src/sdk/storage/quick-storage.ts + + + + + + + + + +var quick_storage_QuickStorage = /*#__PURE__*/function () { + function QuickStorage() { + var _this = this; + + classCallCheck_default()(this, QuickStorage); + + defineProperty_default()(this, "defaultName", globals.namespace); + + defineProperty_default()(this, "storageName", this.defaultName); + + defineProperty_default()(this, "storeNames", scheme_map.storeNames.left); + + defineProperty_default()(this, "storesMap", void 0); + + this.storesMap = {}; + var read = this.read.bind(this); + var write = this.write.bind(this); + utilities_values(this.storeNames).forEach(function (store) { + var shortStoreName = store.name; + Object.defineProperty(_this.storesMap, shortStoreName, { + get: function get() { + return read(shortStoreName); + }, + set: function set(value) { + write(shortStoreName, value); + } + }); + }); + Object.freeze(this.storesMap); + } + /** + * Sets custom name to use in data keys and updates existing keys in localStorage + */ + + + createClass_default()(QuickStorage, [{ + key: "read", + value: + /** + * Get the value for specified key + */ + function read(key + /*: ShortStoreName | ShortPreferencesStoreName*/ + ) + /*: Nullable*/ + { + var valueToParse = localStorage.getItem("".concat(this.storageName, ".").concat(key)); + var value = valueToParse ? JSON.parse(valueToParse) : null; + + if (key === ShortPreferencesStoreName.Preferences && value) { + return convertRecord(ShortPreferencesStoreName.Preferences, Direction.right, value); + } + + return value; + } + /** + * Set the value for specified key + */ + + }, { + key: "write", + value: function write(key + /*: ShortStoreName | ShortPreferencesStoreName*/ + , value + /*: StoreContent*/ + ) { + if (!value) { + localStorage.removeItem("".concat(this.storageName, ".").concat(key)); + } else { + localStorage.setItem("".concat(this.storageName, ".").concat(key), JSON.stringify(value instanceof Array ? value : convertRecord(ShortPreferencesStoreName.Preferences, Direction.left, value))); + } + } + /** + * Clear all data related to the sdk + */ + + }, { + key: "clear", + value: function clear() { + this.deleteData(); + } + /** + * Clear all data related to the sdk + * + * @param wipe if true then also remove permanent data such as user's preferences + */ + + }, { + key: "deleteData", + value: function deleteData() { + var _this2 = this; + + var wipe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + utilities_values(this.storeNames).forEach(function (store) { + if (wipe || !store.permanent) { + localStorage.removeItem("".concat(_this2.storageName, ".").concat(store.name)); + } + }); + } + }, { + key: "setCustomName", + value: function setCustomName(customName + /*: string*/ + ) { + var _this3 = this; + + if (!customName || !customName.length) { + return; + } + + var newName = "".concat(globals.namespace, "-").concat(customName); // Clone data + + utilities_values(this.storeNames).forEach(function (store) { + var key = store.name; + var rawData = localStorage.getItem("".concat(_this3.storageName, ".").concat(key)); // Get data from the store, no need to encode it - _timeoutIds = []; - _list = {}; -} + if (rawData) { + localStorage.setItem("".concat(newName, ".").concat(key), rawData); // Put data into a new store + } + }); + this.deleteData(true); + this.storageName = newName; + } + }, { + key: "stores", + get: function get() { + return this.storesMap; + } + }]); + return QuickStorage; +}(); +/* harmony default export */ var quick_storage = (new quick_storage_QuickStorage()); // CONCATENATED MODULE: ./src/sdk/preferences.js @@ -4148,7 +4407,9 @@ function recover() -var _Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; +var indexeddb_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; + + @@ -4169,87 +4430,14 @@ var Action; Action["delete"] = "delete"; })(Action || (Action = {})); -var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { - createClass_default()(IndexedDBWrapper, null, [{ - key: "tryOpen", - - /** - * Cached promise of IndexedDB validation - */ - - /** - * Tries to open a temporary database - */ - value: function tryOpen(db - /*: IDBFactory*/ - ) - /*: Promise*/ - { - return new _Promise(function (resolve) { - try { - var request = db.open(IndexedDBWrapper.dbValidationName); - - request.onsuccess = function () { - request.result.close(); - db.deleteDatabase(IndexedDBWrapper.dbValidationName); - resolve(true); - }; - - request.onerror = function () { - return resolve(false); - }; - } catch (error) { - resolve(false); - } - }); - } - /** - * Check if IndexedDB is supported in the current browser (exclude iOS forcefully) - */ - - }, { - key: "isSupported", - value: function isSupported() - /*: Promise*/ - { - if (IndexedDBWrapper.isSupportedPromise) { - return IndexedDBWrapper.isSupportedPromise; - } else { - IndexedDBWrapper.isSupportedPromise = new _Promise(function (resolve) { - var indexedDB = IndexedDBWrapper.getIndexedDB(); - var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform); - - if (!indexedDB || iOS) { - logger.warn('IndexedDB is not supported in this browser'); - resolve(false); - } else { - var dbOpenablePromise = IndexedDBWrapper.tryOpen(indexedDB).then(function (dbOpenable) { - if (!dbOpenable) { - logger.warn('IndexedDB is not supported in this browser'); - } - - return dbOpenable; - }); - resolve(dbOpenablePromise); - } - }); - } - - return IndexedDBWrapper.isSupportedPromise; - } - /** - * Get indexedDB instance - */ +var AccessMode; - }, { - key: "getIndexedDB", - value: function getIndexedDB() - /*: Maybe*/ - { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - } - }]); +(function (AccessMode) { + AccessMode["readonly"] = "readonly"; + AccessMode["readwrite"] = "readwrite"; +})(AccessMode || (AccessMode = {})); +var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { function IndexedDBWrapper() { classCallCheck_default()(this, IndexedDBWrapper); @@ -4303,7 +4491,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { return this.migrateDb(this.dbDefaultName, this.dbName); } - return _Promise.resolve(); + return indexeddb_Promise.resolve(); } /** * Opens database with defined name and resolves with database connection if successed @@ -4316,10 +4504,10 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { key: "openDatabase", value: function openDatabase(name /*: string*/ - , version - /*: number*/ , upgradeCallback /*: (event: IDBVersionChangeEvent, reject: () => void) => void*/ + , version + /*: number*/ ) /*: Promise*/ { @@ -4327,9 +4515,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { return IndexedDBWrapper.isSupported().then(function (supported) { if (!supported) { - return _Promise.reject(_this.notSupportedError); + return indexeddb_Promise.reject(_this.notSupportedError); } else { - return new _Promise(function (resolve, reject) { + return new indexeddb_Promise(function (resolve, reject) { var request = _this.idbFactory.open(name, version); if (upgradeCallback) { @@ -4368,12 +4556,12 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { { var _this2 = this; - return new _Promise(function (resolve + return new indexeddb_Promise(function (resolve /*: (result: boolean) => void*/ ) { var existed = true; - _this2.openDatabase(name, undefined, function () { + _this2.openDatabase(name, function () { existed = false; }).then(function (connection) { connection.close(); @@ -4402,14 +4590,12 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { // Function to clone a single store var cloneStore = function cloneStore(storeName - /*: string*/ + /*: ShortStoreName*/ ) { var connection = _this3.indexedDbConnection; _this3.indexedDbConnection = defaultDbConnection; return _this3.getAll(storeName) // Get all records from default-named database - .then(function (records - /*: Array*/ - ) { + .then(function (records) { _this3.indexedDbConnection = customDbConnection; if (records.length < 1) { @@ -4421,16 +4607,23 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }).then(function () { _this3.indexedDbConnection = connection; // Restore initial state }); - }; // Get names of stores + }; // Type guard to filter stores + + + function isStoreName(key + /*: ShortStoreNames*/ + ) + /*: key is ShortStoreName*/ + { + return key !== 'p'; + } // Get names of stores var storeNames - /*: string[]*/ - = utilities_values(scheme_map.storeNames.left).filter(function (store) { - return !store.permanent; - }).map(function (store) { + /*: ShortStoreName[]*/ + = utilities_values(scheme_map.storeNames.left).map(function (store) { return store.name; - }); + }).filter(isStoreName); var cloneStorePromises = storeNames.map(function (name) { return function () { return cloneStore(name); @@ -4439,7 +4632,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { return cloneStorePromises.reduce(function (previousTask, currentTask) { return previousTask.then(currentTask); - }, _Promise.resolve()); + }, indexeddb_Promise.resolve()); } /** * Migrates created database with default name to custom @@ -4461,8 +4654,8 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { return this.databaseExists(defaultName).then(function (defaultExists) { if (defaultExists) { // Migration hadn't finished yet - return _Promise.all([_this4.openDatabase(defaultName, _this4.dbVersion, _this4.handleUpgradeNeeded), // Open the default database, migrate version if needed - _this4.openDatabase(customName, _this4.dbVersion, _this4.handleUpgradeNeeded) // Open or create a new database, migrate version if needed + return indexeddb_Promise.all([_this4.openDatabase(defaultName, _this4.handleUpgradeNeeded, _this4.dbVersion), // Open the default database, migrate version if needed + _this4.openDatabase(customName, _this4.handleUpgradeNeeded, _this4.dbVersion) // Open or create a new database, migrate version if needed ]).then(function (_ref) { var _ref2 = slicedToArray_default()(_ref, 2), defaultDbConnection = _ref2[0], @@ -4478,7 +4671,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }); } else { // There is no default-named database, let's just create or open a custom-named one - return _this4.openDatabase(customName, _this4.dbVersion, _this4.handleUpgradeNeeded).then(function (customDbConnection) { + return _this4.openDatabase(customName, _this4.handleUpgradeNeeded, _this4.dbVersion).then(function (customDbConnection) { _this4.indexedDbConnection = customDbConnection; }); } @@ -4495,7 +4688,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { value: function handleUpgradeNeeded(e /*: IDBVersionChangeEvent*/ , reject - /*: (reason: any) => void*/ + /*: (reason: Event) => void*/ ) { var db = e.target.result; e.target.transaction.onerror = reject; @@ -4513,8 +4706,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { longStoreName = _ref6[0], store = _ref6[1]; + var shortStoreName = store.name; var options = scheme_map.right[longStoreName]; - var objectStore = db.createObjectStore(store.name, { + var objectStore = db.createObjectStore(shortStoreName, { keyPath: options.keyPath, autoIncrement: options.autoIncrement || false }); @@ -4523,15 +4717,18 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { objectStore.createIndex("".concat(options.index, "Index"), options.index); } - if (store.name === storeNames.activityState.name && inMemoryAvailable) { - objectStore.add(convertRecord({ - storeName: longStoreName, - record: activityState, - dir: Direction.left - })); + if (shortStoreName === ShortStoreName.ActivityState && inMemoryAvailable) { + objectStore.add(convertRecord(longStoreName, Direction.left, activityState)); logger.info('Activity state has been recovered'); - } else if (quick_storage.stores[store.name]) { - quick_storage.stores[store.name].forEach(function (record) { + return; + } + + var localStorageRecord + /*: Nullable>*/ + = quick_storage.stores[shortStoreName]; + + if (localStorageRecord) { + localStorageRecord.forEach(function (record) { return objectStore.add(record); }); logger.info("Migration from localStorage done for ".concat(longStoreName, " store")); @@ -4552,12 +4749,12 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { var _this5 = this; if (this.indexedDbConnection) { - return _Promise.resolve({ + return indexeddb_Promise.resolve({ success: true }); } - return this.openDatabase(this.dbName, this.dbVersion, this.handleUpgradeNeeded).then(function (connection) { + return this.openDatabase(this.dbName, this.handleUpgradeNeeded, this.dbVersion).then(function (connection) { _this5.indexedDbConnection = connection; _this5.indexedDbConnection.onclose = function () { @@ -4576,7 +4773,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "getTransactionStore", value: function getTransactionStore(_ref7, reject - /*: (reason: any) => void*/ + /*: (reason: Event) => void*/ , db /*: IDBDatabase*/ ) @@ -4588,10 +4785,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { /*: IDBTransaction*/ = db.transaction([storeName], mode); var store = transaction.objectStore(storeName); - var options = scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })]; + var options = scheme_map.right[convertStoreName(storeName, Direction.right)]; var index; if (options.index) { @@ -4613,9 +4807,11 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "overrideError", - value: function overrideError(reject, error) - /*: Promise*/ - { + value: function overrideError(reject + /*: (reason: Error) => void*/ + , error + /*: IDBError*/ + ) { var _error$target$error = error.target.error, name = _error$target$error.name, message = _error$target$error.message; @@ -4630,10 +4826,26 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "getCompositeKeys", - value: function getCompositeKeys(options) + value: function getCompositeKeys(options + /*: StoreOptions*/ + ) /*: Nullable>*/ { - return options.fields[options.keyPath].composite || null; + var keyField = options.fields[options.keyPath]; + return isCompositeKeyStoreField(keyField) ? keyField.composite : null; + } + /** + * Check if target is an object + */ + + }, { + key: "targetIsObject", + value: function targetIsObject(target + /*: Nullable*/ + ) + /*: target is Record*/ + { + return isObject(target); } /** * Prepare the target to be queried depending on the composite key if defined @@ -4641,14 +4853,36 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "prepareTarget", - value: function prepareTarget(options, target, action + value: function prepareTarget(options + /*: StoreOptions*/ + , target + /*: Nullable*/ + , action /*: Action*/ - ) { - var addOrPut = [Action.add, Action.put].indexOf(action) !== -1; + ) + /*: Nullable*/ + { + if (action === Action.clear || !target) { + return null; // No target needed when we clear the whole store + } + var composite = this.getCompositeKeys(options); - return composite ? addOrPut ? objectSpread2_default()(defineProperty_default()({}, options.keyPath, composite.map(function (key) { - return target[key]; - }).join('')), target) : target ? target.join('') : null : target; + var needObjectTarget = [Action.add, Action.put].indexOf(action) !== -1; + + if (needObjectTarget) { + if (this.targetIsObject(target)) { + // target is a StoredRecord + // extend target with composite path if needed and return it + return composite ? objectSpread2_default()(defineProperty_default()({}, options.keyPath, composite.map(function (key) { + return target[key]; + }).join('')), target) : target; + } + + return null; + } // target is StoredRecordId (plain or composite) + + + return target instanceof Array ? target.join('') : target; } /** * Prepare the result to be return depending on the composite key definition @@ -4656,11 +4890,22 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "prepareResult", - value: function prepareResult(options, target) { + value: function prepareResult(options + /*: StoreOptions*/ + , target + /*: Nullable*/ + ) + /*: Nullable>*/ + { var composite = this.getCompositeKeys(options); - return composite && isObject(target) ? composite.map(function (key) { - return target[key]; - }) : null; + + if (composite && this.targetIsObject(target)) { + return composite.map(function (key) { + return target[key]; + }); + } + + return null; } /** * Initiate the database request @@ -4669,7 +4914,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "initRequest", value: function initRequest(_ref8) - /*: Promise*/ + /*: Promise>*/ { var _this6 = this; @@ -4678,9 +4923,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { target = _ref8$target === void 0 ? null : _ref8$target, action = _ref8.action, _ref8$mode = _ref8.mode, - mode = _ref8$mode === void 0 ? 'readonly' : _ref8$mode; + mode = _ref8$mode === void 0 ? AccessMode.readonly : _ref8$mode; return this.open().then(function () { - return new _Promise(function (resolve, reject) { + return new indexeddb_Promise(function (resolve, reject) { if (!_this6.indexedDbConnection) { reject(_this6.noConnectionError); } else { @@ -4706,7 +4951,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { } }; - request.onerror = function (error) { + request.onerror = function (error + /*: Event*/ + ) { return _this6.overrideError(reject, error); }; } @@ -4720,7 +4967,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "initBulkRequest", value: function initBulkRequest(_ref9) - /*: Promise*/ + /*: Promise>*/ { var _this7 = this; @@ -4728,17 +4975,17 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { target = _ref9.target, action = _ref9.action, _ref9$mode = _ref9.mode, - mode = _ref9$mode === void 0 ? 'readwrite' : _ref9$mode; + mode = _ref9$mode === void 0 ? AccessMode.readwrite : _ref9$mode; if (!target || target && !target.length) { - return _Promise.reject({ + return indexeddb_Promise.reject({ name: 'NoTargetDefined', message: "No array provided to perform ".concat(action, " bulk operation into \"").concat(storeName, "\" store") }); } return this.open().then(function () { - return new _Promise(function (resolve, reject) { + return new indexeddb_Promise(function (resolve, reject) { if (!_this7.indexedDbConnection) { reject(_this7.noConnectionError); } else { @@ -4748,7 +4995,8 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, reject, _this7.indexedDbConnection), transaction = _this7$getTransaction.transaction, store = _this7$getTransaction.store, - options = _this7$getTransaction.options; + options = _this7$getTransaction.options; // Array contains or StoredRecord either RecordIds, but not both at the same time + var _result2 = new Array(); @@ -4786,7 +5034,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "openCursor", value: function openCursor(_ref10) - /*: Promise>*/ + /*: Promise>*/ { var _this8 = this; @@ -4797,9 +5045,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { _ref10$firstOnly = _ref10.firstOnly, firstOnly = _ref10$firstOnly === void 0 ? false : _ref10$firstOnly, _ref10$mode = _ref10.mode, - mode = _ref10$mode === void 0 ? 'readonly' : _ref10$mode; + mode = _ref10$mode === void 0 ? AccessMode.readonly : _ref10$mode; return this.open().then(function () { - return new _Promise(function (resolve, reject) { + return new indexeddb_Promise(function (resolve, reject) { if (!_this8.indexedDbConnection) { reject(_this8.noConnectionError); } else { @@ -4818,7 +5066,7 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { var items = new Array(); transaction.oncomplete = function () { - return resolve(firstOnly ? items[0] : items); + return resolve(items); }; cursorRequest.onsuccess = function (e) { @@ -4850,18 +5098,20 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { value: function deleteDatabaseByName(dbName /*: string*/ ) - /*: Promise*/ + /*: Promise*/ { var _this9 = this; - return new _Promise(function (resolve, reject) { + return new indexeddb_Promise(function (resolve, reject) { var request = _this9.idbFactory.deleteDatabase(dbName); request.onerror = function (error) { return _this9.overrideError(reject, error); }; - request.onsuccess = resolve; + request.onsuccess = function () { + return resolve(); + }; request.onblocked = function (e) { return reject(e.target); @@ -4875,9 +5125,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "getAll", value: function getAll(storeName - /*: string*/ + /*: ShortStoreName*/ ) - /*: Promise>*/ + /*: Promise>*/ { var firstOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; return this.openCursor({ @@ -4893,11 +5143,13 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "getFirst", value: function getFirst(storeName - /*: string*/ + /*: ShortStoreName*/ ) - /*: Promise*/ + /*: Promise>*/ { - return this.getAll(storeName, true); + return this.getAll(storeName, true).then(function (all) { + return all.length ? all[0] : undefined; + }); } /** * Get item from a particular store @@ -4906,11 +5158,11 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "getItem", value: function getItem(storeName - /*: string*/ + /*: ShortStoreName*/ , target - /*: any*/ + /*: StoredRecordId*/ ) - /*: Promise*/ + /*: Promise*/ { return this.initRequest({ storeName: storeName, @@ -4925,11 +5177,11 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "filterBy", value: function filterBy(storeName - /*: string*/ + /*: ShortStoreName*/ , by - /*: string*/ + /*: StoredValue*/ ) - /*: Promise*/ + /*: Promise>*/ { var range = IDBKeyRange.only(by); return this.openCursor({ @@ -4945,15 +5197,17 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "addItem", value: function addItem(storeName - /*: string*/ - , target) - /*: Promise*/ + /*: ShortStoreName*/ + , target + /*: StoredRecord*/ + ) + /*: Promise*/ { return this.initRequest({ storeName: storeName, target: target, action: Action.add, - mode: 'readwrite' + mode: AccessMode.readwrite }); } /** @@ -4963,17 +5217,19 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "addBulk", value: function addBulk(storeName - /*: string*/ - , target, overwrite + /*: ShortStoreName*/ + , target + /*: Array*/ + , overwrite /*: boolean*/ ) - /*: Promise*/ + /*: Promise>*/ { return this.initBulkRequest({ storeName: storeName, target: target, action: overwrite ? Action.put : Action.add, - mode: 'readwrite' + mode: AccessMode.readwrite }); } /** @@ -4983,15 +5239,17 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "updateItem", value: function updateItem(storeName - /*: string*/ - , target) - /*: Promise*/ + /*: ShortStoreName*/ + , target + /*: StoredRecord*/ + ) + /*: Promise*/ { return this.initRequest({ storeName: storeName, target: target, action: Action.put, - mode: 'readwrite' + mode: AccessMode.readwrite }); } /** @@ -5001,15 +5259,17 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "deleteItem", value: function deleteItem(storeName - /*: string*/ - , target) - /*: Promise*/ + /*: ShortStoreName*/ + , target + /*: StoredRecordId*/ + ) + /*: Promise*/ { return this.initRequest({ storeName: storeName, target: target, action: Action.delete, - mode: 'readwrite' + mode: AccessMode.readwrite }); } /** @@ -5019,20 +5279,20 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "deleteBulk", value: function deleteBulk(storeName - /*: string*/ + /*: ShortStoreName*/ , value - /*: any*/ + /*: StoredValue*/ , condition - /*: 'lowerBound' | 'upperBound'*/ + /*: KeyRangeCondition*/ ) - /*: Promise*/ + /*: Promise>*/ { var range = condition ? IDBKeyRange[condition](value) : IDBKeyRange.only(value); return this.openCursor({ storeName: storeName, action: Action.delete, range: range, - mode: 'readwrite' + mode: AccessMode.readwrite }); } /** @@ -5042,22 +5302,19 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "trimItems", value: function trimItems(storeName - /*: string*/ + /*: ShortStoreName*/ , length /*: number*/ ) - /*: Promise*/ + /*: Promise>*/ { var _this10 = this; - var options = scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })]; + var options = scheme_map.right[convertStoreName(storeName, Direction.right)]; return this.getAll(storeName).then(function (records) { return records.length ? records[length - 1] : null; }).then(function (record) { - return record ? _this10.deleteBulk(storeName, record[options.keyPath], 'upperBound') : []; + return record ? _this10.deleteBulk(storeName, record[options.keyPath], KeyRangeCondition.UpperBound) : []; }); } /** @@ -5067,20 +5324,20 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "count", value: function count(storeName - /*: string*/ + /*: ShortStoreName*/ ) /*: Promise*/ { var _this11 = this; return this.open().then(function () { - return new _Promise(function (resolve, reject) { + return new indexeddb_Promise(function (resolve, reject) { if (!_this11.indexedDbConnection) { reject(_this11.noConnectionError); } else { var _this11$getTransactio = _this11.getTransactionStore({ storeName: storeName, - mode: 'readonly' + mode: AccessMode.readonly }, reject, _this11.indexedDbConnection), store = _this11$getTransactio.store; @@ -5104,14 +5361,14 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "clear", value: function clear(storeName - /*: string*/ + /*: ShortStoreName*/ ) - /*: Promise*/ + /*: Promise*/ { return this.initRequest({ storeName: storeName, action: Action.clear, - mode: 'readwrite' + mode: AccessMode.readwrite }); } /** @@ -5120,7 +5377,9 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { }, { key: "destroy", - value: function destroy() { + value: function destroy() + /*: void*/ + { if (this.indexedDbConnection) { this.indexedDbConnection.close(); } @@ -5133,12 +5392,90 @@ var indexeddb_IndexedDBWrapper = /*#__PURE__*/function () { */ }, { - key: "deleteDatabase", - value: function deleteDatabase() - /*: Promise*/ + key: "deleteDatabase", + value: function deleteDatabase() + /*: Promise*/ + { + this.destroy(); + return this.deleteDatabaseByName(this.dbName); + } + }], [{ + key: "tryOpen", + value: + /** + * Cached promise of IndexedDB validation + */ + + /** + * Tries to open a temporary database + */ + function tryOpen(db + /*: IDBFactory*/ + ) + /*: Promise*/ + { + return new indexeddb_Promise(function (resolve) { + try { + var request = db.open(IndexedDBWrapper.dbValidationName); + + request.onsuccess = function () { + request.result.close(); + db.deleteDatabase(IndexedDBWrapper.dbValidationName); + resolve(true); + }; + + request.onerror = function () { + return resolve(false); + }; + } catch (error) { + resolve(false); + } + }); + } + /** + * Check if IndexedDB is supported in the current browser (exclude iOS forcefully) + */ + + }, { + key: "isSupported", + value: function isSupported() + /*: Promise*/ + { + if (IndexedDBWrapper.isSupportedPromise) { + return IndexedDBWrapper.isSupportedPromise; + } else { + IndexedDBWrapper.isSupportedPromise = new indexeddb_Promise(function (resolve) { + var indexedDB = IndexedDBWrapper.getIndexedDB(); + var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform); + + if (!indexedDB || iOS) { + logger.warn('IndexedDB is not supported in this browser'); + resolve(false); + } else { + var dbOpenablePromise = IndexedDBWrapper.tryOpen(indexedDB).then(function (dbOpenable) { + if (!dbOpenable) { + logger.warn('IndexedDB is not supported in this browser'); + } + + return dbOpenable; + }); + resolve(dbOpenablePromise); + } + }); + } + + return IndexedDBWrapper.isSupportedPromise; + } + /** + * Get indexedDB instance + */ + + }, { + key: "getIndexedDB", + value: function getIndexedDB() + /*: Maybe*/ { - this.destroy(); - return this.deleteDatabaseByName(this.dbName); + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; } }]); @@ -5168,6 +5505,8 @@ var localstorage_Promise = typeof Promise === 'undefined' ? __webpack_require__( + + var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { function LocalStorageWrapper() { classCallCheck_default()(this, LocalStorageWrapper); @@ -5175,11 +5514,11 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { createClass_default()(LocalStorageWrapper, [{ key: "open", - + value: /** * Prepare schema details if not existent */ - value: function open() + function open() /*: Promise*/ { return LocalStorageWrapper.isSupported().then(function (supported) { @@ -5206,16 +5545,12 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { longStoreName = _ref4[0], store = _ref4[1]; - var asStoreName = storeNames.activityState.name; + var shortStoreName = store.name; - if (store.name === asStoreName && !quick_storage.stores[asStoreName]) { - quick_storage.stores[asStoreName] = inMemoryAvailable ? [convertRecord({ - storeName: longStoreName, - record: activityState, - dir: Direction.left - })] : []; - } else if (!quick_storage.stores[store.name]) { - quick_storage.stores[store.name] = []; + if (shortStoreName === ShortStoreName.ActivityState && !quick_storage.stores[shortStoreName]) { + quick_storage.stores[shortStoreName] = inMemoryAvailable ? [convertRecord(longStoreName, Direction.left, activityState)] : []; + } else if (!quick_storage.stores[shortStoreName]) { + quick_storage.stores[shortStoreName] = []; } }); recover(); @@ -5226,74 +5561,94 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Get list of composite keys if available - * @param options - * @returns {Array|null} - * @private */ }, { key: "getCompositeKeys", - value: function getCompositeKeys(options) { - return options.fields[options.keyPath].composite || null; + value: function getCompositeKeys(options + /*: StoreOptions*/ + ) + /*: Nullable>*/ + { + var field = options.fields[options.keyPath]; + return isCompositeKeyStoreField(field) ? field.composite : null; } /** * Get composite keys when defined or fallback to primary key for particular store - * - * @param {string} storeName - * @returns {Array} - * @private */ }, { key: "getKeys", - value: function getKeys(storeName) { - var options = scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })]; + value: function getKeys(storeName + /*: ShortStoreName*/ + ) + /*: Array*/ + { + var name = convertStoreName(storeName, Direction.right); + var options + /*: StoreOptions*/ + = scheme_map.right[name]; return this.getCompositeKeys(options) || [options.keyPath]; } + /** + * Return next index using the current one and undefined if current is undefined + */ + + }, { + key: "nextIndex", + value: function nextIndex(current + /*: Maybe*/ + ) + /*: Maybe*/ + { + return typeof current === 'number' ? current + 1 : undefined; + } /** * Initiate quasi-database request - * - * @param {string} storeName - * @param {*=} id - * @param {Object=} item - * @param {Function} action - * @returns {Promise} - * @private */ }, { key: "initRequest", - value: function initRequest(_ref5, action - /*: Action*/ - ) { + value: function initRequest + /*:: */ + (_ref5, action + /*: Action*/ + ) + /*: Promise*/ + { var _this = this; var storeName = _ref5.storeName, id = _ref5.id, item = _ref5.item; - var options = scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })]; + var options = scheme_map.right[convertStoreName(storeName, Direction.right)]; return this.open().then(function (open) { if (open.status === 'error') { return localstorage_Promise.reject(open.error); } return new localstorage_Promise(function (resolve, reject) { - var items = quick_storage.stores[storeName]; + var items + /*: Array*/ + = quick_storage.stores[storeName]; var keys = _this.getKeys(storeName); - var ids = id instanceof Array ? id.slice() : [id]; var lastId = (items[items.length - 1] || {})[options.keyPath] || 0; - var target = id ? keys.map(function (key, index) { - return [key, ids[index]]; - }).reduce(reducer, {}) : objectSpread2_default()({}, item); - var index = target ? findIndex(items, keys, target) : null; + var target + /*: StoredRecord*/ + ; + + if (!id) { + target = objectSpread2_default()({}, item); + } else { + var ids = Array.isArray(id) ? id.slice() : [id]; + target = keys.map(function (key, index) { + return [key, ids[index]]; + }).reduce(reducer, {}); + } + + var index = target ? findIndex(items, keys, target) : 0; return action(resolve, reject, { keys: keys, items: items, @@ -5308,24 +5663,32 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { * Sort the array by provided key (key can be a composite one) * - by default sorts in ascending order by primary keys * - force order by provided value - * - * @param {Array} items - * @param {Array} keys - * @param {string=} exact - * @returns {Array} - * @private */ }, { key: "sort", - value: function sort(items, keys, exact - /*: string*/ - ) { + value: function sort + /*:: */ + (items + /*: Array*/ + , keys + /*: Array*/ + , exact + /*: Nullable*/ + ) + /*: Array*/ + { var clone = toConsumableArray_default()(items); var reversed = keys.slice().reverse(); - function compare(a, b, key) { + function compare(a + /*: T*/ + , b + /*: T*/ + , key + /*: string*/ + ) { var expr1 = exact ? exact === a[key] : a[key] < b[key]; var expr2 = exact ? exact > a[key] : a[key] > b[key]; return expr1 ? -1 : expr2 ? 1 : 0; @@ -5339,21 +5702,19 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Prepare the target to be queried depending on the composite key if defined - * - * @param {Object} options - * @param {*} target - * @param {number} next - * @returns {*} - * @private */ }, { key: "prepareTarget", - value: function prepareTarget(options, target - /*: any*/ + value: function prepareTarget(options + /*: StoreOptions*/ + , target + /*: StoredRecord*/ , next /*: number*/ - ) { + ) + /*: StoredRecord*/ + { var composite = this.getCompositeKeys(options); return composite ? objectSpread2_default()(defineProperty_default()({}, options.keyPath, composite.map(function (key) { return target[key]; @@ -5361,40 +5722,46 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Prepare the result to be return depending on the composite key definition - * - * @param {Object} options - * @param {Object} target - * @returns {*} - * @private */ }, { key: "prepareResult", - value: function prepareResult(options, target) { + value: function prepareResult(options + /*: StoreOptions*/ + , target + /*: StoredRecord*/ + ) + /*: StoredRecordId*/ + { var composite = this.getCompositeKeys(options); - return composite && isObject(target) ? composite.map(function (key) { - return target[key]; - }) : target[options.keyPath] || target; + + if (composite) { + return composite.map(function (key) { + return target[key]; + }).filter(function (value) { + return ( + /*: value is StoredValue*/ + !valueIsRecord(value) + ); + }); + } + + return target[options.keyPath]; } /** * Get all records from particular store - * - * @param {string} storeName - * @param {boolean=} firstOnly - * @returns {Promise} */ }, { key: "getAll", value: function getAll(storeName - /*: string*/ - , firstOnly - /*: boolean*/ + /*: ShortStoreName*/ ) - /*: Promise>*/ + /*: Promise>*/ { var _this2 = this; + var firstOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; return this.open().then(function (open) { if (open.status === 'error') { return localstorage_Promise.reject(open.error); @@ -5404,7 +5771,7 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { var value = quick_storage.stores[storeName]; if (value instanceof Array) { - resolve(firstOnly ? value[0] : _this2.sort(value, _this2.getKeys(storeName))); + resolve(firstOnly ? [value[0]] : _this2.sort(value, _this2.getKeys(storeName))); } else { reject({ name: 'NotFoundError', @@ -5416,41 +5783,39 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Get the first row from the store - * - * @param {string} storeName - * @returns {Promise} */ }, { key: "getFirst", value: function getFirst(storeName - /*: string*/ + /*: ShortStoreName*/ ) - /*: Promise*/ + /*: Promise>*/ { - return this.getAll(storeName, true); + return this.getAll(storeName, true).then(function (all) { + return all.length ? all[0] : undefined; + }); } /** * Get item from a particular store - * - * @param {string} storeName - * @param {*} id - * @returns {Promise} */ }, { key: "getItem", value: function getItem(storeName - /*: string*/ - , id) - /*: Promise*/ + /*: ShortStoreName*/ + , id + /*: StoredRecordId*/ + ) + /*: Promise*/ { var _this3 = this; - return this.initRequest({ - storeName: storeName, - id: id - }, function (resolve, reject, _ref6) { + var action + /*: Action*/ + = function action + /*: Action*/ + (resolve, reject, _ref6) { var items = _ref6.items, index = _ref6.index, options = _ref6.options; @@ -5463,48 +5828,48 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } else { resolve(_this3.prepareTarget(options, items[index])); } - }); + }; + + return this.initRequest({ + storeName: storeName, + id: id + }, action); } /** * Return filtered result by value on available index - * - * @param {string} storeName - * @param {string} by - * @returns {Promise} */ }, { key: "filterBy", value: function filterBy(storeName - /*: string*/ + /*: ShortStoreName*/ , by - /*: string*/ + /*: StoredValue*/ ) - /*: Promise*/ + /*: Promise>*/ { - return this.getAll(storeName).then(function (result) { + return this.getAll(storeName).then(function (result + /*: Array*/ + ) { return result.filter(function (item) { - return item[scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })].index] === by; + var store = scheme_map.right[convertStoreName(storeName, Direction.right)]; + var indexedValue = store.index && item[store.index]; + return indexedValue === by; }); }); } /** * Add item to a particular store - * - * @param {string} storeName - * @param {Object} item - * @returns {Promise} */ }, { key: "addItem", value: function addItem(storeName - /*: string*/ - , item) - /*: Promise*/ + /*: ShortStoreName*/ + , item + /*: StoredRecord*/ + ) + /*: Promise*/ { var _this4 = this; @@ -5523,7 +5888,7 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { message: "Constraint was not satisfied, trying to add existing item into \"".concat(storeName, "\" store") }); } else { - items.push(_this4.prepareTarget(options, item, lastId + 1)); + items.push(_this4.prepareTarget(options, item, _this4.nextIndex(lastId))); quick_storage.stores[storeName] = items; resolve(_this4.prepareResult(options, item)); } @@ -5531,21 +5896,18 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Add multiple items into particular store - * - * @param {string} storeName - * @param {Object} target - * @param {boolean=} overwrite - * @returns {Promise} */ }, { key: "addBulk", value: function addBulk(storeName - /*: string*/ - , target, overwrite + /*: ShortStoreName*/ + , target + /*: Array*/ + , overwrite /*: boolean*/ ) - /*: Promise*/ + /*: Promise>*/ { var _this5 = this; @@ -5558,15 +5920,16 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { lastId = _ref8.lastId; if (!target || target && !target.length) { - return reject({ + reject({ name: 'NoTargetDefined', message: "No array provided to perform add bulk operation into \"".concat(storeName, "\" store") }); + return; } var id = lastId; var newItems = target.map(function (item) { - return _this5.prepareTarget(options, item, ++id); + return _this5.prepareTarget(options, item, id = _this5.nextIndex(id)); }); var overlapping = newItems.filter(function (item) { return findIndex(items, keys, item) !== -1; @@ -5584,26 +5947,25 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { }); } else { quick_storage.stores[storeName] = _this5.sort([].concat(toConsumableArray_default()(currentItems), toConsumableArray_default()(newItems)), keys); - resolve(target.map(function (item) { + var result = target.map(function (item) { return _this5.prepareResult(options, item); - })); + }); + resolve(result); } }); } /** * Update item in a particular store - * - * @param {string} storeName - * @param {Object} item - * @returns {Promise} */ }, { key: "updateItem", value: function updateItem(storeName - /*: string*/ - , item) - /*: Promise*/ + /*: ShortStoreName*/ + , item + /*: StoredRecord*/ + ) + /*: Promise*/ { var _this6 = this; @@ -5615,7 +5977,7 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { index = _ref9.index, options = _ref9.options, lastId = _ref9.lastId; - var nextId = index === -1 ? lastId + 1 : null; + var nextId = index === -1 ? _this6.nextIndex(lastId) : undefined; var target = _this6.prepareTarget(options, item, nextId); @@ -5631,18 +5993,16 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Delete item from a particular store - * - * @param {string} storeName - * @param {*} id - * @returns {Promise} */ }, { key: "deleteItem", value: function deleteItem(storeName - /*: string*/ - , id) - /*: Promise*/ + /*: ShortStoreName*/ + , id + /*: StoredRecordId*/ + ) + /*: Promise*/ { return this.initRequest({ storeName: storeName, @@ -5661,24 +6021,26 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Find index of the item with the closest value to the bound - * - * @param {Array} array - * @param {string} key - * @param {number|string} value - * @returns {number} - * @private */ }, { key: "findMax", - value: function findMax(array, key, value) { + value: function findMax(array + /*: Array*/ + , key + /*: string*/ + , value + /*: StoredValue*/ + ) + /*: number*/ + { if (!array.length) { return -1; } var max = { index: -1, - value: isNaN(value) ? '' : 0 + value: typeof value === 'string' ? '' : 0 }; for (var i = 0; i < array.length; i += 1) { @@ -5698,36 +6060,33 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Delete items until certain bound (primary key as a bound scope) - * - * @param {string} storeName - * @param {*} value - * @param {string=} condition - * @returns {Promise} + * Returns array of deleted elements */ }, { key: "deleteBulk", value: function deleteBulk(storeName - /*: string*/ + /*: ShortStoreName*/ , value - /*: any*/ + /*: StoredValue*/ , condition - /*: 'lowerBound' | 'upperBound'*/ + /*: KeyRangeCondition*/ ) - /*: Promise*/ + /*: Promise>*/ { var _this7 = this; - return this.getAll(storeName).then(function (items) { + return this.getAll(storeName).then(function (items + /*: Array*/ + ) { var keys = _this7.getKeys(storeName); - var key = scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })].index || keys[0]; + var key = scheme_map.right[convertStoreName(storeName, Direction.right)].index || keys[0]; var exact = condition ? null : value; - var sorted = _this7.sort(items, keys, exact); + var sorted + /*: Array*/ + = _this7.sort(items, keys, exact); var index = _this7.findMax(sorted, key, value); @@ -5735,9 +6094,11 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { return []; } - var start = condition === 'lowerBound' ? index : 0; - var end = !condition || condition === 'upperBound' ? index + 1 : sorted.length; - var deleted = sorted.splice(start, end).map(function (item) { + var start = condition === KeyRangeCondition.LowerBound ? index : 0; + var end = !condition || condition === KeyRangeCondition.UpperBound ? index + 1 : sorted.length; + var deleted + /*: Array*/ + = sorted.splice(start, end).map(function (item) { return keys.length === 1 ? item[key] : keys.map(function (k) { return item[k]; }); @@ -5748,44 +6109,39 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { } /** * Trim the store from the left by specified length - * - * @param {string} storeName - * @param {number} length - * @returns {Promise} */ }, { key: "trimItems", value: function trimItems(storeName - /*: string*/ + /*: ShortStoreName*/ , length /*: number*/ ) - /*: Promise*/ + /*: Promise>*/ { var _this8 = this; - var options = scheme_map.right[convertStoreName({ - storeName: storeName, - dir: Direction.right - })]; - return this.getAll(storeName).then(function (records) { + var convertedName = convertStoreName(storeName, Direction.right); + var options + /*: StoreOptions*/ + = scheme_map.right[convertedName]; + return this.getAll(storeName).then(function (records + /*: Array>*/ + ) { return records.length ? records[length - 1] : null; }).then(function (record) { - return record ? _this8.deleteBulk(storeName, record[options.keyPath], 'upperBound') : []; + return record ? _this8.deleteBulk(storeName, record[options.keyPath], KeyRangeCondition.UpperBound) : []; }); } /** * Count the number of records in the store - * - * @param {string} storeName - * @returns {Promise} */ }, { key: "count", value: function count(storeName - /*: string*/ + /*: ShortStoreName*/ ) /*: Promise*/ { @@ -5794,22 +6150,20 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { return localstorage_Promise.reject(open.error); } - return localstorage_Promise.resolve(quick_storage.stores[storeName].length); + var records = quick_storage.stores[storeName]; + return localstorage_Promise.resolve(records instanceof Array ? records.length : 1); }); } /** * Clear all records from a particular store - * - * @param {string} storeName - * @returns {Promise} */ }, { key: "clear", value: function clear(storeName - /*: string*/ + /*: ShortStoreName*/ ) - /*: Promise*/ + /*: Promise*/ { return this.open().then(function (open) { if (open.status === 'error') { @@ -5818,7 +6172,7 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { return new localstorage_Promise(function (resolve) { quick_storage.stores[storeName] = []; - resolve({}); + resolve(); }); }); } @@ -5840,7 +6194,7 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { }], [{ key: "isSupported", - + value: /** * Cached promise of LocalStorage validation */ @@ -5848,7 +6202,7 @@ var localstorage_LocalStorageWrapper = /*#__PURE__*/function () { /** * Check if LocalStorage is supported in the current browser */ - value: function isSupported() + function isSupported() /*: Promise*/ { if (LocalStorageWrapper.isSupportedPromise) { @@ -5903,11 +6257,10 @@ var storage_StorageType; /** * Methods to extend - * - * @type {Object} - * @private */ -var _methods = { +var _methods +/*: CommonStorageMethods*/ += { getAll: _getAll, getFirst: _getFirst, getItem: _getItem, @@ -5925,300 +6278,244 @@ var _methods = { }; /** * Extends storage's getAll method by decoding returned records - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _getAll(storage, storeName) { - return storage.getAll(storeName).then(function (records) { - return convertRecords({ - storeName: storeName, - dir: Direction.right, - records: records - }); +function _getAll(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, firstOnly +/*: boolean*/ +) { + return storage.getAll(storeName, firstOnly).then(function (records) { + return convertRecords(storeName, Direction.right, records); }); } /** * Extends storage's getFirst method by decoding returned record - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _getFirst(storage, storeName) { +function _getFirst(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +) { return storage.getFirst(storeName).then(function (record) { - return convertRecord({ - storeName: storeName, - dir: Direction.right, - record: record - }); + return convertRecord(storeName, Direction.right, record); }); } /** * Extends storage's getItem method by encoding target value and then decoding returned record - * - * @param {Object} storage - * @param {string} storeName - * @param {string|string[]} target - * @returns {Promise} - * @private */ -function _getItem(storage, storeName, target) { - return storage.getItem(storeName, convertValues({ - storeName: storeName, - dir: Direction.left, - target: target - })).then(function (record) { - return convertRecord({ - storeName: storeName, - dir: Direction.right, - record: record - }); +function _getItem(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, target +/*: StoredRecordId*/ +) { + return storage.getItem(storeName, convertValues(storeName, Direction.left, target)).then(function (record) { + return convertRecord(storeName, Direction.right, record); }).catch(function (error) { - return storage_Promise.reject(decodeErrorMessage({ - storeName: storeName, - error: error - })); + return storage_Promise.reject(decodeErrorMessage(storeName, error)); }); } /** * Extends storage's filterBy method by encoding target value and then decoding returned records - * - * @param {Object} storage - * @param {string} storeName - * @param {string} target - * @returns {Promise} - * @private */ -function _filterBy(storage, storeName, target) { +function _filterBy(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, target +/*: string*/ +) { return storage.filterBy(storeName, encodeValue(target)).then(function (records) { - return convertRecords({ - storeName: storeName, - dir: Direction.right, - records: records - }); + return convertRecords(storeName, Direction.right, records); }); } /** * Extends storage's addItem method by encoding target record and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param {Object} record - * @returns {Promise} - * @private */ -function _addItem(storage, storeName, record) { - return storage.addItem(storeName, convertRecord({ - storeName: storeName, - dir: Direction.left, - record: record - })).then(function (target) { - return convertValues({ - storeName: storeName, - dir: Direction.right, - target: target - }); +function _addItem(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, record +/*: StoredRecord*/ +) { + var convertedRecord = convertRecord(storeName, Direction.left, record); + return storage.addItem(storeName, convertedRecord).then(function (target) { + return convertValues(storeName, Direction.right, target); }).catch(function (error) { - return storage_Promise.reject(decodeErrorMessage({ - storeName: storeName, - error: error - })); + return storage_Promise.reject(decodeErrorMessage(storeName, error)); }); } /** * Extends storage's addBulk method by encoding target records and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param {Object[]} records - * @param {boolean} overwrite - * @returns {Promise} - * @private */ -function _addBulk(storage, storeName, records, overwrite) { - return storage.addBulk(storeName, convertRecords({ - storeName: storeName, - dir: Direction.left, - records: records - }), overwrite).then(function (values) { +function _addBulk(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, records +/*: Array*/ +, overwrite +/*: boolean*/ +) { + var convertedRecords + /*: Array*/ + = convertRecords(storeName, Direction.left, records); + return storage.addBulk(storeName, convertedRecords, overwrite).then(function (values) { return values.map(function (target) { - return convertValues({ - storeName: storeName, - dir: Direction.right, - target: target - }); + return convertValues(storeName, Direction.right, target); }); }).catch(function (error) { - return storage_Promise.reject(decodeErrorMessage({ - storeName: storeName, - error: error - })); + return storage_Promise.reject(decodeErrorMessage(storeName, error)); }); } /** * Extends storage's updateItem method by encoding target record and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param record - * @returns {Promise} - * @private */ -function _updateItem(storage, storeName, record) { - return storage.updateItem(storeName, convertRecord({ - storeName: storeName, - dir: Direction.left, - record: record - })).then(function (target) { - return convertValues({ - storeName: storeName, - dir: Direction.right, - target: target - }); +function _updateItem(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, record +/*: StoredRecord*/ +) { + var convertedRecord = convertRecord(storeName, Direction.left, record); + return storage.updateItem(storeName, convertedRecord).then(function (target) { + return convertValues(storeName, Direction.right, target); }); } /** * Extends storage's deleteItem method by encoding target value and then decoding returned keys - * - * @param {Object} storage - * @param {string} storeName - * @param {string|string[]} target - * @returns {Promise} - * @private */ -function _deleteItem(storage, storeName, target) { - return storage.deleteItem(storeName, convertValues({ - storeName: storeName, - dir: Direction.left, - target: target - })).then(function (target) { - return convertValues({ - storeName: storeName, - dir: Direction.right, - target: target - }); +function _deleteItem(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, target +/*: StoredRecordId*/ +) { + return storage.deleteItem(storeName, convertValues(storeName, Direction.left, target)).then(function (target) { + return convertValues(storeName, Direction.right, target); }); } /** * Extends storage's deleteBulk method by encoding target value and then decoding returned records that are deleted - * - * @param {Object} storage - * @param {string} storeName - * @param {string} target - * @param {string?} condition - * @returns {Promise} - * @private */ -function _deleteBulk(storage, storeName, target, condition) { - return storage.deleteBulk(storeName, encodeValue(target), condition).then(function (records) { +function _deleteBulk(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, value +/*: StoredValue*/ +, condition +/*: KeyRangeCondition*/ +) { + return storage.deleteBulk(storeName, encodeValue(value), condition).then(function (records) { return records.map(function (record) { - return convertValues({ - storeName: storeName, - dir: Direction.right, - target: record - }); + return convertValues(storeName, Direction.right, record); }); }); } /** * Extends storage's trimItems method by passing encoded storage name - * - * @param {Object} storage - * @param {string} storeName - * @param {number} length - * @returns {Promise} - * @private */ -function _trimItems(storage, storeName, length) { +function _trimItems(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +, length +/*: number*/ +) { return storage.trimItems(storeName, length); } /** * Extends storage's count method by passing encoded storage name - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _count(storage, storeName) { +function _count(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +) { return storage.count(storeName); } /** * Extends storage's clear method by passing encoded storage name - * - * @param {Object} storage - * @param {string} storeName - * @returns {Promise} - * @private */ -function _clear(storage, storeName) { +function _clear(storage +/*: IStorage*/ +, storeName +/*: ShortStoreName*/ +) { return storage.clear(storeName); } /** * Calls storage's destroy method - * - * @param {Object} storage - * @private */ -function _destroy(storage) { +function _destroy(storage +/*: IStorage*/ +) { return storage.destroy(); } /** * Calls storage's deleteDatabase method - * - * @param {Object} storage - * @private */ -function _deleteDatabase(storage) { +function _deleteDatabase(storage +/*: IndexedDB | LocalStorage*/ +) { return storage.deleteDatabase(); } /** * Augment whitelisted methods with encoding/decoding functionality - * - * @param {Object} storage - * @returns {Object} - * @private */ -function _augment() { - return entries(_methods).map(function (_ref) { +function _augment() +/*: StorageMethods*/ +{ + var methods + /*: Array<[MethodName, StorageMethod]>*/ + = entries(_methods).map(function (_ref) { var _ref2 = slicedToArray_default()(_ref, 2), methodName = _ref2[0], method = _ref2[1]; - return [methodName, function (storeName) { + var augmentedMethod + /*: StorageMethod*/ + = function augmentedMethod + /*: StorageMethod*/ + (storeName + /*: StoreName*/ + ) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } @@ -6227,14 +6524,14 @@ function _augment() { var storage = _ref3.storage; if (storage) { - return method.call.apply(method, [null, storage, convertStoreName({ - storeName: storeName, - dir: Direction.left - })].concat(args)); + return method.call.apply(method, [null, storage, convertStoreName(storeName, Direction.left)].concat(args)); } }); - }]; - }).reduce(reducer, {}); + }; + + return [methodName, augmentedMethod]; + }); + return methods.reduce(reducer, {}); } /** * Type of available storage @@ -6322,7 +6619,8 @@ function storage_init(dbName var default_params_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type NavigatorT, type CreatedAtT, type SentAtT, type WebUuidT, type TrackEnabledT, type PlatformT, type LanguageT, type MachineTypeT, type QueueSizeT, type DefaultParamsT } from './types';*/ +/*:: // +import { type NavigatorT, type CreatedAtT, type SentAtT, type WebUuidT, type TrackEnabledT, type PlatformT, type LanguageT, type MachineTypeT, type QueueSizeT, type DefaultParamsT } from './types';*/ @@ -6509,7 +6807,7 @@ var UrlStrategy; function getEndpointPreference() /*: BaseUrlsMap | EndpointName[]*/ { - var _Config$getCustomConf = config.getCustomConfig(), + var _Config$getCustomConf = sdk_config.getCustomConfig(), customUrl = _Config$getCustomConf.customUrl, urlStrategy = _Config$getCustomConf.urlStrategy; @@ -6570,7 +6868,9 @@ function urlStrategyRetries(sendRequest var trySendRequest /*: () => Promise*/ - = function trySendRequest() { + = function trySendRequest + /*: () => Promise*/ + () { var endpointKey = preferredUrls[attempt++]; var urlsMap = endpoints[endpointKey]; return sendRequest(urlsMap).catch(function (reason) { @@ -6598,7 +6898,8 @@ function urlStrategyRetries(sendRequest var http_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type UrlT, type DefaultParamsT, type HttpSuccessResponseT, type HttpErrorResponseT, type HttpRequestParamsT, type ErrorCodeT } from './types';*/ +/*:: // +import { type UrlT, type DefaultParamsT, type HttpSuccessResponseT, type HttpErrorResponseT, type HttpRequestParamsT, type ErrorCodeT } from './types';*/ @@ -6757,7 +7058,7 @@ function _encodeParams(params }); }; - var allParams = entries(objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, config.getBaseParams()), defaultParams), params)).map(function (_ref5) { + var allParams = entries(objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, sdk_config.getBaseParams()), defaultParams), params)).map(function (_ref5) { var _ref6 = slicedToArray_default()(_ref5, 2), key = _ref6[0], value = _ref6[1]; @@ -7023,7 +7324,8 @@ function http(options }); } // CONCATENATED MODULE: ./src/sdk/backoff.js -/*:: import { type BackOffStrategyT } from './types';*/ +/*:: // +import { type BackOffStrategyT } from './types';*/ /** * Options for the back-off strategy for different environments @@ -7091,7 +7393,8 @@ function backOff(attempts // CONCATENATED MODULE: ./src/sdk/listeners.js -/*:: import { type DocumentT } from './types';*/ +/*:: // +import { type DocumentT } from './types';*/ /*:: type EventCbT = (e: Event) => void*/ @@ -7261,7 +7564,8 @@ function listeners_destroy() var request_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type HttpSuccessResponseT, type HttpErrorResponseT, type HttpContinueCbT, type BackOffStrategyT, type WaitT, type UrlT, type MethodT, type RequestParamsT, type HttpRequestParamsT } from './types';*/ +/*:: // +import { type HttpSuccessResponseT, type HttpErrorResponseT, type HttpContinueCbT, type BackOffStrategyT, type WaitT, type UrlT, type MethodT, type RequestParamsT, type HttpRequestParamsT } from './types';*/ @@ -8009,7 +8313,8 @@ function disable_status() var identity_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type ActivityStateMapT } from './types';*/ +/*:: // +import { type ActivityStateMapT } from './types';*/ @@ -8231,7 +8536,8 @@ function identity_destroy() var queue_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type HttpSuccessResponseT, type HttpErrorResponseT, type HttpFinishCbT, type WaitT, type UrlT, type MethodT, type RequestParamsT, type ActivityStateMapT } from './types';*/ +/*:: // +import { type HttpSuccessResponseT, type HttpErrorResponseT, type HttpFinishCbT, type WaitT, type UrlT, type MethodT, type RequestParamsT, type ActivityStateMapT } from './types';*/ @@ -8559,7 +8865,7 @@ function setOffline(state function _cleanUp() /*: Promise*/ { - var upperBound = Date.now() - config.requestValidityWindow; + var upperBound = Date.now() - sdk_config.requestValidityWindow; return storage_storage.deleteBulk(queue_storeName, upperBound, 'upperBound'); } /** @@ -8605,7 +8911,8 @@ function queue_destroy() var global_params_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type GlobalParamsT, type GlobalParamsMapT } from './types';*/ +/*:: // +import { type GlobalParamsT, type GlobalParamsMapT } from './types';*/ @@ -8800,7 +9107,8 @@ function global_params_clear() // CONCATENATED MODULE: ./src/sdk/session.js var session_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type DocumentT, type HttpSuccessResponseT, type HttpErrorResponseT, type GlobalParamsMapT, type SessionRequestParamsT } from './types';*/ +/*:: // +import { type DocumentT, type HttpSuccessResponseT, type HttpErrorResponseT, type GlobalParamsMapT, type SessionRequestParamsT } from './types';*/ @@ -9023,7 +9331,7 @@ function _startTimer() _idInterval = setInterval(function () { activity_state.updateSessionOffset(); return persist(); - }, config.sessionTimerWindow); + }, sdk_config.sessionTimerWindow); } /** * Stop the session timer @@ -9094,7 +9402,7 @@ function _checkSession() var isEnqueued = activityState.sessionCount > 0; var currentWindow = lastInterval * SECOND; - if (!isEnqueued || isEnqueued && currentWindow >= config.sessionWindow) { + if (!isEnqueued || isEnqueued && currentWindow >= sdk_config.sessionWindow) { return _trackSession(); } @@ -9108,7 +9416,8 @@ function _checkSession() var attribution_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type HttpSuccessResponseT, type HttpErrorResponseT, type HttpFinishCbT, type HttpRetryCbT, type AttributionStateT, type AttributionWhiteListT, type ActivityStateMapT, type AttributionMapT } from './types';*/ +/*:: // +import { type HttpSuccessResponseT, type HttpErrorResponseT, type HttpFinishCbT, type HttpRetryCbT, type AttributionStateT, type AttributionWhiteListT, type ActivityStateMapT, type AttributionMapT } from './types';*/ @@ -9351,7 +9660,7 @@ function forget(force return false; } - if (!config.isInitialised()) { + if (!sdk_config.isInitialised()) { logger.log(gdpr_forget_device_logMessages.pending); return true; } @@ -9473,7 +9782,7 @@ function optOut(force return false; } - if (!config.isInitialised()) { + if (!sdk_config.isInitialised()) { logger.log(third_party_sharing_logMessages.delayed); return true; } @@ -9627,7 +9936,8 @@ function scheduler_destroy() var event_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type EventParamsT, type EventRequestParamsT, type GlobalParamsMapT, type GlobalKeyValueParamsT } from './types';*/ +/*:: // +import { type EventParamsT, type EventRequestParamsT, type GlobalParamsMapT, type GlobalKeyValueParamsT } from './types';*/ @@ -9759,7 +10069,7 @@ function _pushEventDeduplicationId(id ) /*: Promise*/ { - var customLimit = config.getCustomConfig().eventDeduplicationListLimit; + var customLimit = sdk_config.getCustomConfig().eventDeduplicationListLimit; var limit = customLimit > 0 ? customLimit : DEFAULT_EVENT_DEDUPLICATION_LIST_LIMIT; return storage_storage.count(event_storeName).then(function (count) { var chain = event_Promise.resolve(); @@ -9840,7 +10150,8 @@ function event_event(params }); } // CONCATENATED MODULE: ./src/sdk/sdk-click.js -/*:: import { type SdkClickRequestParamsT } from './types';*/ +/*:: // +import { type SdkClickRequestParamsT } from './types';*/ @@ -9896,12 +10207,103 @@ function sdkClick() }); } } +// EXTERNAL MODULE: ./src/sdk/smart-banner/template.html +var template = __webpack_require__(11); +var template_default = /*#__PURE__*/__webpack_require__.n(template); + +// EXTERNAL MODULE: ./src/sdk/smart-banner/styles.scss +var styles = __webpack_require__(21); + +// CONCATENATED MODULE: ./src/sdk/smart-banner/smart-banner.ts + + + + + + +/** + * Adjust Web SDK Smart Banner + */ + +var smart_banner_SmartBanner = /*#__PURE__*/function () { + function SmartBanner() { + classCallCheck_default()(this, SmartBanner); + + defineProperty_default()(this, "parent", void 0); + + defineProperty_default()(this, "banner", void 0); + } + + createClass_default()(SmartBanner, [{ + key: "getBanners", + value: + /** + * Loads banners from backend if available + */ + function getBanners(appWebToken + /*: string*/ + ) { + return { + parentId: '', + image: '', + header: 'Adjust Smart Banners', + description: 'Not so smart actually, but deep links do the magic anyway', + buttonText: 'Let\'s go!' + }; + } + }, { + key: "init", + value: function init(appWebToken + /*: string*/ + ) + /*: void*/ + { + logger.info('Initialise Smart Banner'); + var banner = this.getBanners(appWebToken); + this.parent = banner.parentId && document.getElementById(banner.parentId) || document.body; + this.banner = document.createElement('div'); + this.banner.setAttribute('class', 'banner'); + this.banner.innerHTML = template_default.a; + this.parent.appendChild(this.banner); + } + }, { + key: "showBanner", + value: function showBanner() + /*: void*/ + { + if (this.banner) { + this.banner.hidden = false; + } else { + logger.error('There is no Smart Banner to show, have you called initialisation?'); + } + } + }, { + key: "hideBanner", + value: function hideBanner() + /*: void*/ + { + if (this.banner) { + this.banner.hidden = true; + } else { + logger.error('There is no Smart Banner to hide, have you called initialisation?'); + } + } + }]); + + return SmartBanner; +}(); + +var smartBanner = new smart_banner_SmartBanner(); + // CONCATENATED MODULE: ./src/sdk/main.js +var _excluded = ["logLevel", "logOutput"]; var main_Promise = typeof Promise === 'undefined' ? __webpack_require__(3).Promise : Promise; -/*:: import { type InitOptionsT, type LogOptionsT, type EventParamsT, type GlobalParamsT, type CustomErrorT, type ActivityStateMapT } from './types';*/ +/*:: // +import { type InitOptionsT, type LogOptionsT, type EventParamsT, type GlobalParamsT, type CustomErrorT, type ActivityStateMapT } from './types';*/ + @@ -9977,7 +10379,7 @@ function initSdk() var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, logLevel = _ref.logLevel, logOutput = _ref.logOutput, - options = objectWithoutProperties_default()(_ref, ["logLevel", "logOutput"]); + options = objectWithoutProperties_default()(_ref, _excluded); logger.setLogLevel(logLevel, logOutput); @@ -9986,7 +10388,7 @@ function initSdk() return; } - if (config.hasMissing(options)) { + if (sdk_config.hasMissing(options)) { return; } @@ -10144,7 +10546,7 @@ function stop() { var done = disable(); - if (done && config.isInitialised()) { + if (done && sdk_config.isInitialised()) { _shutdown(); } } @@ -10178,7 +10580,7 @@ function gdprForgetMe() done = gdpr_forget_device_disable(); - if (done && config.isInitialised()) { + if (done && sdk_config.isInitialised()) { _pause(); } } @@ -10195,6 +10597,25 @@ function disableThirdPartySharing() stopBeforeInit: false }); } + +function initSmartBanner(_ref2) +/*: void*/ +{ + var appWebToken = _ref2.appWebToken; + smartBanner.init(appWebToken); +} + +function showSmartBanner() +/*: void*/ +{ + smartBanner.showBanner(); +} + +function hideSmartBanner() +/*: void*/ +{ + smartBanner.hideBanner(); +} /** * Handle third party sharing disable * @@ -10241,7 +10662,7 @@ function _handleGdprForgetMe() function _isInitialised() /*: boolean*/ { - return _isInitialising || config.isInitialised(); + return _isInitialising || sdk_config.isInitialised(); } /** * Pause sdk by canceling: @@ -10282,7 +10703,7 @@ function _shutdown(async) identity_destroy(); listeners_destroy(); storage_storage.destroy(); - config.destroy(); + sdk_config.destroy(); } /** * Destroy the instance @@ -10436,7 +10857,7 @@ function _start(options return; } - config.set(options); + sdk_config.set(options); register(); subscribe('sdk:installed', _handleSdkInstalled); subscribe('sdk:shutdown', function () { @@ -10469,9 +10890,9 @@ function _preCheck(description , callback /*: () => mixed*/ ) { - var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - schedule = _ref2.schedule, - stopBeforeInit = _ref2.stopBeforeInit; + var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + schedule = _ref3.schedule, + stopBeforeInit = _ref3.stopBeforeInit; if (storage_storage.getType() === STORAGE_TYPES.NO_STORAGE) { logger.log("Adjust SDK can not ".concat(description, ", no storage available")); @@ -10517,6 +10938,9 @@ var Adjust = { restart: restart, gdprForgetMe: gdprForgetMe, disableThirdPartySharing: disableThirdPartySharing, + initSmartBanner: initSmartBanner, + showSmartBanner: showSmartBanner, + hideSmartBanner: hideSmartBanner, __testonly__: { destroy: main_destroy, clearDatabase: _clearDatabase diff --git a/dist/adjust-latest.min.js b/dist/adjust-latest.min.js index 9b6b205..c192933 100644 --- a/dist/adjust-latest.min.js +++ b/dist/adjust-latest.min.js @@ -1,8 +1,8 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Adjust=t():e.Adjust=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t,n){var r=n(2);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}e.exports=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(t)}e.exports=n},function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,c=[],l=!1,d=-1;function f(){l&&s&&(l=!1,s.length?c=s.concat(c):d=-1,c.length&&p())}function p(){if(!l){var e=u(f);l=!0;for(var t=c.length;t;){for(s=c,c=[];++d1)for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:[];return e.reduce((function(e,t){return o()(o()({},e),{},v()({},t.key,t.value))}),{})}function P(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.filter((function(e){return-1!==t.indexOf(e)}))}function x(e,t){return new RegExp("\\/".concat(t,"(\\/.*|\\?.*){0,1}$")).test(e)}function D(e,t){var n=s()(t,2),r=n[0],i=n[1];return o()(o()({},e),{},v()({},r,i))}function _(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n={entries:function(t){return[t,e[t]]},values:function(t){return e[t]}};return Object[t]?Object[t](e):Object.keys(e).map(n[t])}function I(e){return _(e,"entries")}function T(e){return _(e,"values")}function O(e){return k(e)?!b(e):!!e||0===e}var C,j={namespace:"adjust-sdk",version:"5.1.2",env:"production"},A=(C={},v()(C,"none",-1),v()(C,"error",0),v()(C,"warning",1),v()(C,"info",2),v()(C,"verbose",3),C),E={log:" ",info:" ",warn:" ",error:""},R={development:"verbose",production:"error",test:"verbose"},B=q(),M="";function q(){return R[j.env]||"error"}function L(e,t){var n;if(!(A[B]2?u-2:0),c=2;c1&&void 0!==arguments[1]?arguments[1]:1,n=e+"",r=1;r<=t;r+=1)e0?"-":"+")+fe(Math.floor(Math.abs(t)/60))+fe(Math.abs(t)%60)}(t);return"".concat(n,"T").concat(r,"Z").concat(o)}function me(e,t){return isNaN(e)||isNaN(t)?0:Math.abs(t-e)}var he={},ve=!1,ge=!1;function ye(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};he=ve?o()({},e):{}}function be(){ve&&(he.lastInterval=function(){var e=he.lastActive;if(e)return Math.round(me(e,Date.now())/1e3);return-1}(),he.lastActive=Date.now())}function ke(e){he=o()(o()({},he),e)}function we(){ge=!0}function Se(){var e=he.lastActive;return Math.round(me(e,Date.now())/1e3)}function Ne(){return(he.timeSpent||0)+(ge?Se():0)}function Pe(){var e=me(he.lastActive,Date.now())=0?he.lastInterval:0,n={timeSpent:he.timeSpent||0,sessionLength:he.sessionLength||0,sessionCount:he.sessionCount||1,lastInterval:t||0};return e&&x(e,"event")&&(n.eventCount=he.eventCount),n},updateParams:function(e,t){if(ve){var n={};n.timeSpent=Ne(),n.sessionLength=Pe(),x(e,"session")&&(n.sessionCount=(he.sessionCount||0)+1),x(e,"event")&&(n.eventCount=(he.eventCount||0)+1),ke(n),t||be()}},updateInstalled:function(){ve&&(he.installed||ke({installed:!0}))},updateSessionOffset:xe,updateSessionLength:function(){ve&&(ke({sessionLength:Pe()}),be())},resetSessionOffset:function(){ve&&ke({timeSpent:0,sessionLength:0})},updateLastActive:be,destroy:function(){he={},ve=!1,ge=!1}};function Ie(e,t){return e&&void 0!==e[t]?e[t]:t}function Te(e){var t=e.storeName,n=e.dir,r=e.record,i=e.scheme;if(r)return i=i||de[n][Ae({storeName:t,dir:De.right})].fields,I(r).map((function(e){var r=s()(e,2),o=r[0],a=r[1];return function(e){var t=e.storeName,n=e.scheme,r=e.dir,o=e.key,i=e.value;if(!n)return[o,i];var a=n.key||n;return k(i)?[a,Te({storeName:t,dir:r,record:i,scheme:n.keys})]:[a,Ie(n.values,i)]}({storeName:t,scheme:i[o],dir:n,key:o,value:a})})).reduce((function(e,t){var n=s()(t,2),r=n[0],i=n[1];return o()(o()({},e),{},v()({},r,i))}),{})}function Oe(e){var t=e.storeName,n=e.dir,r=e.records;return(void 0===r?[]:r).map((function(e){return Te({storeName:t,dir:n,record:e})}))}function Ce(e){var t=e.storeName,n=e.dir,r=e.target,o=de[n][Ae({storeName:t,dir:De.right})],i=o.fields[o.keyPath],a=r instanceof Array?r.slice():[r],u=(i.composite||[o.keyPath]).map((function(e,t){return Ie(o.fields[e].values,a[t])}));return 1===u.length?u[0]:u}function je(e){return de.values[e]||e}function Ae(e){var t=e.storeName,n=e.dir;return(de.storeNames[n][t]||{}).name||t}function Ee(e){var t=e.storeName,n=e.error;return{name:n.name,message:n.message.replace('"'.concat(t,'"'),Ae({storeName:t,dir:De.right}))}}!function(e){e.right="right",e.left="left"}(De||(De={}));var Re=new(function(){function e(){var t=this;Z()(this,e),v()(this,"defaultName",j.namespace),v()(this,"storageName",this.defaultName),v()(this,"storeNames",de.storeNames.left),v()(this,"storesMap",void 0),this.storesMap={};var n=this.read.bind(this),r=this.write.bind(this);T(this.storeNames).forEach((function(e){Object.defineProperty(t.storesMap,e.name,{get:function(){return n(e.name)},set:function(t){r(e.name,t)}})})),Object.freeze(this.storesMap)}return ee()(e,[{key:"read",value:function(e){var t=localStorage.getItem("".concat(this.storageName,".").concat(e)),n=JSON.parse(t||"null");return(n instanceof Array?n:Te({storeName:this.storeNames.preferences.name,dir:De.right,record:n}))||null}},{key:"write",value:function(e,t){t?localStorage.setItem("".concat(this.storageName,".").concat(e),JSON.stringify(t instanceof Array?t:Te({storeName:this.storeNames.preferences.name,dir:De.left,record:t}))):localStorage.removeItem("".concat(this.storageName,".").concat(e))}},{key:"clear",value:function(){this.deleteData()}},{key:"deleteData",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];T(this.storeNames).forEach((function(n){!t&&n.permanent||localStorage.removeItem("".concat(e.storageName,".").concat(n.name))}))}}]),ee()(e,[{key:"setCustomName",value:function(e){var t=this;if(e&&e.length){var n="".concat(j.namespace,"-").concat(e);T(this.storeNames).forEach((function(e){var r=e.name,o=localStorage.getItem("".concat(t.storageName,".").concat(r));o&&localStorage.setItem("".concat(n,".").concat(r),o)})),this.deleteData(!0),this.storageName=n}}},{key:"stores",get:function(){return this.storesMap}}]),e}()),Be={},Me=[];function qe(e,t){var n="id"+Math.random().toString(36).substr(2,16),r={id:n,cb:t};return Be[e]||(Be[e]=[]),Be[e].push(r),n}function Le(e,t){Be[e]&&Be[e].forEach((function(n){"function"==typeof n.cb&&Me.push(setTimeout((function(){return n.cb(e,t)})))}))}var Ke=te.preferences.name,Fe=Ue();function Ue(){return Fe||Ge(),Fe?o()({},Fe):null}function Ge(){Fe=Re.stores[Ke]}function Ve(){var e=Ue();return e?e.sdkDisabled:null}function We(e){var t=e?o()({},e):null;Re.stores[Ke]=o()(o()({},Ue()),{},{sdkDisabled:t}),Ge()}function He(){var e=Ue();return e?e.thirdPartySharingDisabled:null}function Ye(){var e=Re.stores[Ke]||{},t=(Fe||{}).sdkDisabled||null;e.sdkDisabled&&!t&&Le("sdk:shutdown"),Ge()}function Je(){Re.stores[Ke]||(Re.stores[Ke]=o()({},Fe))}var ze,Qe="undefined"==typeof Promise?n(3).Promise:Promise;!function(e){e.add="add",e.put="put",e.get="get",e.list="list",e.clear="clear",e.delete="delete"}(ze||(ze={}));var Xe=function(){function e(){Z()(this,e),v()(this,"dbDefaultName",j.namespace),v()(this,"dbName",this.dbDefaultName),v()(this,"dbVersion",1),v()(this,"idbFactory",void 0),v()(this,"indexedDbConnection",null),v()(this,"notSupportedError",{name:"IDBNotSupported",message:"IndexedDB is not supported"}),v()(this,"databaseOpenError",{name:"CannotOpenDatabaseError",message:"Cannot open a database"}),v()(this,"noConnectionError",{name:"NoDatabaseConnection",message:"Cannot open a transaction"});var t=e.getIndexedDB();if(!t)throw this.notSupportedError;this.idbFactory=t}return ee()(e,null,[{key:"tryOpen",value:function(t){return new Qe((function(n){try{var r=t.open(e.dbValidationName);r.onsuccess=function(){r.result.close(),t.deleteDatabase(e.dbValidationName),n(!0)},r.onerror=function(){return n(!1)}}catch(e){n(!1)}}))}},{key:"isSupported",value:function(){return e.isSupportedPromise||(e.isSupportedPromise=new Qe((function(t){var n=e.getIndexedDB(),r=!!navigator.platform&&/iPad|iPhone|iPod/.test(navigator.platform);!n||r?(F.warn("IndexedDB is not supported in this browser"),t(!1)):t(e.tryOpen(n).then((function(e){return e||F.warn("IndexedDB is not supported in this browser"),e})))}))),e.isSupportedPromise}},{key:"getIndexedDB",value:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}}]),ee()(e,[{key:"setCustomName",value:function(e){return e&&e.length>0?(this.dbName="".concat(j.namespace,"-").concat(e),this.migrateDb(this.dbDefaultName,this.dbName)):Qe.resolve()}},{key:"openDatabase",value:function(t,n,r){var o=this;return e.isSupported().then((function(e){return e?new Qe((function(e,i){var a=o.idbFactory.open(t,n);r&&(a.onupgradeneeded=function(e){return r(e,i)}),a.onsuccess=function(t){var n=t.target.result;n?e(n):i(o.databaseOpenError)},a.onerror=i})):Qe.reject(o.notSupportedError)}))}},{key:"databaseExists",value:function(e){var t=this;return new Qe((function(n){var r=!0;t.openDatabase(e,void 0,(function(){r=!1})).then((function(n){if(n.close(),!r)return t.deleteDatabaseByName(e)})).then((function(){return n(r)}))}))}},{key:"cloneData",value:function(e,t){var n=this;return T(de.storeNames.left).filter((function(e){return!e.permanent})).map((function(e){return e.name})).map((function(r){return function(){return o=r,i=n.indexedDbConnection,n.indexedDbConnection=e,n.getAll(o).then((function(e){if(n.indexedDbConnection=t,!(e.length<1))return n.addBulk(o,e,!0)})).then((function(){n.indexedDbConnection=i}));var o,i}})).reduce((function(e,t){return e.then(t)}),Qe.resolve())}},{key:"migrateDb",value:function(e,t){var n=this;return this.databaseExists(e).then((function(r){return r?Qe.all([n.openDatabase(e,n.dbVersion,n.handleUpgradeNeeded),n.openDatabase(t,n.dbVersion,n.handleUpgradeNeeded)]).then((function(t){var r=s()(t,2),o=r[0],i=r[1];return n.cloneData(o,i).then((function(){return n.indexedDbConnection=i,o.close(),n.deleteDatabaseByName(e)}))})).then((function(){return F.info("Database migration finished")})):n.openDatabase(t,n.dbVersion,n.handleUpgradeNeeded).then((function(e){n.indexedDbConnection=e}))}))}},{key:"handleUpgradeNeeded",value:function(e,t){var n=e.target.result;e.target.transaction.onerror=t,e.target.transaction.onabort=t;var r=de.storeNames.left,o=_e.current||{},i=o&&!b(o);I(r).filter((function(e){return!s()(e,2)[1].permanent})).forEach((function(e){var t=s()(e,2),a=t[0],u=t[1],c=de.right[a],l=n.createObjectStore(u.name,{keyPath:c.keyPath,autoIncrement:c.autoIncrement||!1});c.index&&l.createIndex("".concat(c.index,"Index"),c.index),u.name===r.activityState.name&&i?(l.add(Te({storeName:a,record:o,dir:De.left})),F.info("Activity state has been recovered")):Re.stores[u.name]&&(Re.stores[u.name].forEach((function(e){return l.add(e)})),F.info("Migration from localStorage done for ".concat(a," store")))})),Je(),Re.clear()}},{key:"open",value:function(){var e=this;return this.indexedDbConnection?Qe.resolve({success:!0}):this.openDatabase(this.dbName,this.dbVersion,this.handleUpgradeNeeded).then((function(t){return e.indexedDbConnection=t,e.indexedDbConnection.onclose=function(){return e.destroy},{success:!0}}))}},{key:"getTransactionStore",value:function(e,t,n){var r,o=e.storeName,i=e.mode,a=n.transaction([o],i),u=a.objectStore(o),s=de.right[Ae({storeName:o,dir:De.right})];return s.index&&(r=u.index("".concat(s.index,"Index"))),a.onerror=t,a.onabort=t,{transaction:a,store:u,index:r,options:s}}},{key:"overrideError",value:function(e,t){var n=t.target.error;return e({name:n.name,message:n.message})}},{key:"getCompositeKeys",value:function(e){return e.fields[e.keyPath].composite||null}},{key:"prepareTarget",value:function(e,t,n){var r=-1!==[ze.add,ze.put].indexOf(n),i=this.getCompositeKeys(e);return i?r?o()(v()({},e.keyPath,i.map((function(e){return t[e]})).join("")),t):t?t.join(""):null:t}},{key:"prepareResult",value:function(e,t){var n=this.getCompositeKeys(e);return n&&k(t)?n.map((function(e){return t[e]})):null}},{key:"initRequest",value:function(e){var t=this,n=e.storeName,r=e.target,o=void 0===r?null:r,i=e.action,a=e.mode,u=void 0===a?"readonly":a;return this.open().then((function(){return new Qe((function(e,r){if(t.indexedDbConnection){var a=t.getTransactionStore({storeName:n,mode:u},r,t.indexedDbConnection),s=a.store,c=a.options,l=s[i](t.prepareTarget(c,o,i)),d=t.prepareResult(c,o);l.onsuccess=function(){i!==ze.get||l.result?e(d||l.result||o):r({name:"NotRecordFoundError",message:'Requested record not found in "'.concat(n,'" store')})},l.onerror=function(e){return t.overrideError(r,e)}}else r(t.noConnectionError)}))}))}},{key:"initBulkRequest",value:function(e){var t=this,n=e.storeName,r=e.target,o=e.action,i=e.mode,a=void 0===i?"readwrite":i;return!r||r&&!r.length?Qe.reject({name:"NoTargetDefined",message:"No array provided to perform ".concat(o,' bulk operation into "').concat(n,'" store')}):this.open().then((function(){return new Qe((function(e,i){if(t.indexedDbConnection){var u=t.getTransactionStore({storeName:n,mode:a},i,t.indexedDbConnection),s=u.transaction,c=u.store,l=u.options,d=new Array,f=r[0];s.oncomplete=function(){return e(d)};!function e(n){n.onerror=function(e){return t.overrideError(i,e)},n.onsuccess=function(){d.push(t.prepareResult(l,f)||n.result),f=r[d.length],d.length1&&void 0!==arguments[1]&&arguments[1];return this.openCursor({storeName:e,action:ze.list,firstOnly:t})}},{key:"getFirst",value:function(e){return this.getAll(e,!0)}},{key:"getItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:ze.get})}},{key:"filterBy",value:function(e,t){var n=IDBKeyRange.only(t);return this.openCursor({storeName:e,action:ze.list,range:n})}},{key:"addItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:ze.add,mode:"readwrite"})}},{key:"addBulk",value:function(e,t,n){return this.initBulkRequest({storeName:e,target:t,action:n?ze.put:ze.add,mode:"readwrite"})}},{key:"updateItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:ze.put,mode:"readwrite"})}},{key:"deleteItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:ze.delete,mode:"readwrite"})}},{key:"deleteBulk",value:function(e,t,n){var r=n?IDBKeyRange[n](t):IDBKeyRange.only(t);return this.openCursor({storeName:e,action:ze.delete,range:r,mode:"readwrite"})}},{key:"trimItems",value:function(e,t){var n=this,r=de.right[Ae({storeName:e,dir:De.right})];return this.getAll(e).then((function(e){return e.length?e[t-1]:null})).then((function(t){return t?n.deleteBulk(e,t[r.keyPath],"upperBound"):[]}))}},{key:"count",value:function(e){var t=this;return this.open().then((function(){return new Qe((function(n,r){if(t.indexedDbConnection){var o=t.getTransactionStore({storeName:e,mode:"readonly"},r,t.indexedDbConnection).store.count();o.onsuccess=function(){return n(o.result)},o.onerror=function(e){return t.overrideError(r,e)}}else r(t.noConnectionError)}))}))}},{key:"clear",value:function(e){return this.initRequest({storeName:e,action:ze.clear,mode:"readwrite"})}},{key:"destroy",value:function(){this.indexedDbConnection&&this.indexedDbConnection.close(),this.indexedDbConnection=null}},{key:"deleteDatabase",value:function(){return this.destroy(),this.deleteDatabaseByName(this.dbName)}}]),e}();v()(Xe,"dbValidationName","validate-db-openable"),v()(Xe,"isSupportedPromise",null);var Ze="undefined"==typeof Promise?n(3).Promise:Promise,$e=function(){function e(){Z()(this,e)}return ee()(e,[{key:"open",value:function(){return e.isSupported().then((function(e){if(!e)return{status:"error",error:{name:"LSNotSupported",message:"LocalStorage is not supported"}};var t=de.storeNames.left,n=_e.current||{},r=n&&!b(n);return I(t).filter((function(e){return!s()(e,2)[1].permanent})).forEach((function(e){var o=s()(e,2),i=o[0],a=o[1],u=t.activityState.name;a.name!==u||Re.stores[u]?Re.stores[a.name]||(Re.stores[a.name]=[]):Re.stores[u]=r?[Te({storeName:i,record:n,dir:De.left})]:[]})),Je(),{status:"success"}}))}},{key:"getCompositeKeys",value:function(e){return e.fields[e.keyPath].composite||null}},{key:"getKeys",value:function(e){var t=de.right[Ae({storeName:e,dir:De.right})];return this.getCompositeKeys(t)||[t.keyPath]}},{key:"initRequest",value:function(e,t){var n=this,r=e.storeName,i=e.id,a=e.item,u=de.right[Ae({storeName:r,dir:De.right})];return this.open().then((function(e){return"error"===e.status?Ze.reject(e.error):new Ze((function(e,s){var c=Re.stores[r],l=n.getKeys(r),d=i instanceof Array?i.slice():[i],f=(c[c.length-1]||{})[u.keyPath]||0,p=i?l.map((function(e,t){return[e,d[t]]})).reduce(D,{}):o()({},a),m=p?S(c,l,p):null;return t(e,s,{keys:l,items:c,index:m,options:u,lastId:f})}))}))}},{key:"sort",value:function(e,t,n){var r=l()(e),o=t.slice().reverse();return r.sort((function(e,t){return o.reduce((function(r,o){return r||function(e,t,r){var o=n?n===e[r]:e[r]e[r]:e[r]>t[r];return o?-1:i?1:0}(e,t,o)}),0)}))}},{key:"prepareTarget",value:function(e,t,n){var r=this.getCompositeKeys(e);return r?o()(v()({},e.keyPath,r.map((function(e){return t[e]})).join("")),t):e.autoIncrement&&n?o()(v()({},e.keyPath,n),t):o()({},t)}},{key:"prepareResult",value:function(e,t){var n=this.getCompositeKeys(e);return n&&k(t)?n.map((function(e){return t[e]})):t[e.keyPath]||t}},{key:"getAll",value:function(e,t){var n=this;return this.open().then((function(r){return"error"===r.status?Ze.reject(r.error):new Ze((function(r,o){var i=Re.stores[e];i instanceof Array?r(t?i[0]:n.sort(i,n.getKeys(e))):o({name:"NotFoundError",message:"No objectStore named ".concat(e," in this database")})}))}))}},{key:"getFirst",value:function(e){return this.getAll(e,!0)}},{key:"getItem",value:function(e,t){var n=this;return this.initRequest({storeName:e,id:t},(function(t,r,o){var i=o.items,a=o.index,u=o.options;-1===a?r({name:"NotRecordFoundError",message:'Requested record not found in "'.concat(e,'" store')}):t(n.prepareTarget(u,i[a]))}))}},{key:"filterBy",value:function(e,t){return this.getAll(e).then((function(n){return n.filter((function(n){return n[de.right[Ae({storeName:e,dir:De.right})].index]===t}))}))}},{key:"addItem",value:function(e,t){var n=this;return this.initRequest({storeName:e,item:t},(function(r,o,i){var a=i.items,u=i.index,s=i.options,c=i.lastId;-1!==u?o({name:"ConstraintError",message:'Constraint was not satisfied, trying to add existing item into "'.concat(e,'" store')}):(a.push(n.prepareTarget(s,t,c+1)),Re.stores[e]=a,r(n.prepareResult(s,t)))}))}},{key:"addBulk",value:function(e,t,n){var r=this;return this.initRequest({storeName:e},(function(o,i,a){var u=a.keys,s=a.items,c=a.options,d=a.lastId;if(!t||t&&!t.length)return i({name:"NoTargetDefined",message:'No array provided to perform add bulk operation into "'.concat(e,'" store')});var f=d,p=t.map((function(e){return r.prepareTarget(c,e,++f)})),m=p.filter((function(e){return-1!==S(s,u,e)})).map((function(e){return e[c.keyPath]})),h=n?s.filter((function(e){return-1===m.indexOf(e[c.keyPath])})):l()(s);m.length&&!n?i({name:"ConstraintError",message:'Constraint was not satisfied, trying to add existing items into "'.concat(e,'" store')}):(Re.stores[e]=r.sort([].concat(l()(h),l()(p)),u),o(t.map((function(e){return r.prepareResult(c,e)}))))}))}},{key:"updateItem",value:function(e,t){var n=this;return this.initRequest({storeName:e,item:t},(function(r,o,i){var a=i.items,u=i.index,s=i.options,c=i.lastId,l=-1===u?c+1:null,d=n.prepareTarget(s,t,l);-1===u?a.push(d):a.splice(u,1,d),Re.stores[e]=a,r(n.prepareResult(s,t))}))}},{key:"deleteItem",value:function(e,t){return this.initRequest({storeName:e,id:t},(function(n,r,o){var i=o.items,a=o.index;-1!==a&&(i.splice(a,1),Re.stores[e]=i),n(t)}))}},{key:"findMax",value:function(e,t,n){if(!e.length)return-1;for(var r={index:-1,value:isNaN(n)?"":0},o=0;o=r.value&&(r={value:e[o][t],index:o})}return r.index}},{key:"deleteBulk",value:function(e,t,n){var r=this;return this.getAll(e).then((function(o){var i=r.getKeys(e),a=de.right[Ae({storeName:e,dir:De.right})].index||i[0],u=n?null:t,s=r.sort(o,i,u),c=r.findMax(s,a,t);if(-1===c)return[];var l="lowerBound"===n?c:0,d=n&&"upperBound"!==n?s.length:c+1,f=s.splice(l,d).map((function(e){return 1===i.length?e[a]:i.map((function(t){return e[t]}))}));return Re.stores[e]=s,f}))}},{key:"trimItems",value:function(e,t){var n=this,r=de.right[Ae({storeName:e,dir:De.right})];return this.getAll(e).then((function(e){return e.length?e[t-1]:null})).then((function(t){return t?n.deleteBulk(e,t[r.keyPath],"upperBound"):[]}))}},{key:"count",value:function(e){return this.open().then((function(t){return"error"===t.status?Ze.reject(t.error):Ze.resolve(Re.stores[e].length)}))}},{key:"clear",value:function(e){return this.open().then((function(t){return"error"===t.status?Ze.reject(t.error):new Ze((function(t){Re.stores[e]=[],t({})}))}))}},{key:"destroy",value:function(){}},{key:"deleteDatabase",value:function(){}}],[{key:"isSupported",value:function(){if(e.isSupportedPromise)return e.isSupportedPromise;var t=(new Date).toString(),n=window.localStorage;return e.isSupportedPromise=new Ze((function(e){n.setItem(t,t);var r=n.getItem(t)===t;n.removeItem(t),e(!(!r||!n))})).catch((function(){return F.warn("LocalStorage is not supported in this browser"),Ze.resolve(!1)})),e.isSupportedPromise}}]),e}();v()($e,"isSupportedPromise",null);var et,tt,nt="undefined"==typeof Promise?n(3).Promise:Promise;(tt=et||(et={}))[tt.noStorage=f]="noStorage",tt[tt.indexedDB=p]="indexedDB",tt[tt.localStorage=m]="localStorage";var rt,ot={getAll:function(e,t){return e.getAll(t).then((function(e){return Oe({storeName:t,dir:De.right,records:e})}))},getFirst:function(e,t){return e.getFirst(t).then((function(e){return Te({storeName:t,dir:De.right,record:e})}))},getItem:function(e,t,n){return e.getItem(t,Ce({storeName:t,dir:De.left,target:n})).then((function(e){return Te({storeName:t,dir:De.right,record:e})})).catch((function(e){return nt.reject(Ee({storeName:t,error:e}))}))},filterBy:function(e,t,n){return e.filterBy(t,je(n)).then((function(e){return Oe({storeName:t,dir:De.right,records:e})}))},addItem:function(e,t,n){return e.addItem(t,Te({storeName:t,dir:De.left,record:n})).then((function(e){return Ce({storeName:t,dir:De.right,target:e})})).catch((function(e){return nt.reject(Ee({storeName:t,error:e}))}))},addBulk:function(e,t,n,r){return e.addBulk(t,Oe({storeName:t,dir:De.left,records:n}),r).then((function(e){return e.map((function(e){return Ce({storeName:t,dir:De.right,target:e})}))})).catch((function(e){return nt.reject(Ee({storeName:t,error:e}))}))},updateItem:function(e,t,n){return e.updateItem(t,Te({storeName:t,dir:De.left,record:n})).then((function(e){return Ce({storeName:t,dir:De.right,target:e})}))},deleteItem:function(e,t,n){return e.deleteItem(t,Ce({storeName:t,dir:De.left,target:n})).then((function(e){return Ce({storeName:t,dir:De.right,target:e})}))},deleteBulk:function(e,t,n,r){return e.deleteBulk(t,je(n),r).then((function(e){return e.map((function(e){return Ce({storeName:t,dir:De.right,target:e})}))}))},trimItems:function(e,t,n){return e.trimItems(t,n)},count:function(e,t){return e.count(t)},clear:function(e,t){return e.clear(t)},destroy:function(e){return e.destroy()},deleteDatabase:function(e){return e.deleteDatabase()}};var it=null;function at(e){var t=null;return null!==it?it:it=nt.all([Xe.isSupported(),$e.isSupported()]).then((function(n){var r=s()(n,2),o=r[0],i=r[1];if(Re.setCustomName(e),o){rt=et.indexedDB;var a=new Xe;return a.setCustomName(e).then((function(){return t=a}))}return i?(rt=et.localStorage,t=new $e,nt.resolve(t)):(F.error("There is no storage available, app will run with minimum set of features"),rt=et.noStorage,t=null,nt.resolve(t))})).then((function(){return{type:rt,storage:t}}))}var ut,st,ct=o()({init:at,getType:function(){return rt}},I(ot).map((function(e){var t=s()(e,2),n=t[0],r=t[1];return[n,function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o2&&void 0!==arguments[2]&&arguments[2];return{status:"error",action:n?"CONTINUE":"RETRY",response:w(e.responseText)?JSON.parse(e.responseText):e.responseText,message:d[t],code:t}}function gt(e,t){var n=e.slice(0,e.length-t.length-1).split("").reduce((function(e){return e.concat(" ")}),"");return"".concat(t).concat(n,":")}function yt(e,t){var n=function(e){return e.replace(/([A-Z])/g,(function(e){return"_".concat(e.toLowerCase())}))},r=I(o()(o()(o()({},Q.getBaseParams()),t),e)).map((function(e){var t=s()(e,2),r=t[0],o=t[1];return[n(r),o]}));return F.log("REQUEST PARAMETERS:"),r.filter((function(e){return O(s()(e,2)[1])})).map((function(e){var t=s()(e,2),n=t[0],r=t[1];return F.log(gt("REQUEST PARAMETERS:",n),r),function(e){var t=s()(e,2),n=t[0],r=t[1],o=encodeURIComponent(n),i=r;return"string"==typeof r&&(i=encodeURIComponent(r)),k(r)&&(i=encodeURIComponent(JSON.stringify(r)||"")),[o,i].join("=")}([n,r])})).join("&")}function bt(e,t,n){var r=n.xhr,o=n.url;if(4===r.readyState){var i=r.status>=200&&r.status<300,a=w(r.responseText);if(0!==r.status)return a?t(i?function(e,t){var n=JSON.parse(e.responseText),r={status:"success",adid:n.adid,timestamp:n.timestamp,ask_in:n.ask_in,retry_in:n.retry_in,continue_in:n.continue_in,tracking_state:n.tracking_state,attribution:void 0,message:void 0};return x(t,"attribution")&&(r.attribution=n.attribution,r.message=n.message),I(r).filter((function(e){return!!s()(e,2)[1]})).reduce(D,{})}(r,o):vt(r,"SERVER_CANNOT_PROCESS",!0)):e(vt(r,i?"SERVER_MALFORMED_RESPONSE":"SERVER_INTERNAL_ERROR"));e(vt(r,"NO_CONNECTION"))}}function kt(e,t,n){var r=e.url,o=e.method,i=void 0===o?"GET":o,a=e.params,u=function(e,t,n){var r=e.url,o=e.method,i=yt(e.params,t);return{fullUrl:n["/gdpr_forget_device"===r?"gdpr":"app"]+r+("GET"===o?"?".concat(i):""),encodedParams:i}}({url:r,method:i,params:void 0===a?{}:a},t,n),c=u.fullUrl,l=u.encodedParams;return new ht((function(e,t){var n=new XMLHttpRequest;n.open(i,c,!0),function(e,t){var n=[["Client-SDK","js".concat(j.version)],["Content-Type","POST"===t?"application/x-www-form-urlencoded":"application/json"]];F.log("REQUEST HEADERS:"),n.forEach((function(t){var n=s()(t,2),r=n[0],o=n[1];e.setRequestHeader(r,o),F.log(gt("REQUEST HEADERS:",r),o)}))}(n,i),n.onreadystatechange=function(){return bt(t,e,{xhr:n,url:r})},n.onerror=function(){return t(vt(n,"TRANSACTION_ERROR"))},n.send("GET"===i?void 0:l)}))}function wt(e,t){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:pt,n=ft();if(Array.isArray(n)){var r=0,o=function o(){var i=n[r++],a=t[i];return e(a).catch((function(e){if("NO_CONNECTION"===e.code&&(F.log("Failed to connect ".concat(mt[i]," endpoint")),r0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,n=e.method,r=void 0===n?"GET":n,i=e.params,a=void 0===i?{}:i,u=e.continueCb,c=e.strategy,l=e.wait,f={url:t,method:r,params:a,continueCb:u},p=t,m=r,h=o()({},a),v=u,g=c,y=null,k={request:0,connection:0},w=N(l),S=null;function N(e){return(e=e||150)>2147483647?2147483647:e}function P(e){var t=e.url,n=e.method,r=e.params,i=e.continueCb;t&&(p=t),n&&(m=n),b(r)||(h=o()({},r)),h=o()({createdAt:pe()},h),"function"==typeof i&&(v=i)}function x(e){if(!S)return!1;if(y){var t=w-(Date.now()-S);if(e&&t0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,n=e.method,r=e.params,o=void 0===r?{}:r,i=e.continueCb,a=e.wait;return P({url:t,method:n,params:o,continueCb:i}),_({wait:a})}function q(){return!!y}function L(){y&&clearTimeout(y),y=null}function K(){var e=!!S;L(),S=null,e&&(w=150,k.request=0,k.connection=0,F.log("Previous ".concat(p||"unknown"," request attempt canceled")),j())}return{send:M,isRunning:q,clear:K}},Et=function(e){return"gdpr"===e?"GDPR disable":"disable"},Rt=function(e){return{start:{inProgress:"Adjust SDK ".concat(Et(e)," process has already started"),done:"Adjust SDK ".concat(Et(e)," process is now started")},finish:{inProgress:"Adjust SDK ".concat(Et(e)," process has already finished"),done:"Adjust SDK ".concat(Et(e)," process is now finished")}}};function Bt(e,t){var n=e.reason,r=e.pending,o=Ve()||{},i="start"===t&&o.pending?"start":"finish",a="start"===t&&o.reason,u="finish"===t&&o.reason&&!o.pending;return a||u?(F.log(Rt(o.reason)[i].inProgress),!1):(F.log(Rt(n)[i].done),We({reason:n||"general",pending:r}),!0)}function Mt(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Bt({reason:e,pending:t||!1},"start")}function qt(){var e=Ve()||{};return"general"===e.reason||"gdpr"===e.reason&&!e.pending?"off":"gdpr"===e.reason&&e.pending?"paused":"on"}var Lt="undefined"==typeof Promise?n(3).Promise:Promise,Kt=!1;function Ft(e){return e?"unknown"===e.uuid?(Mt({reason:"gdpr"}),_e.destroy(),{exists:!0,stored:null}):(_e.init(e),{exists:!0,stored:e}):{exists:!1}}function Ut(){return"off"!==qt()&&_e.isStarted()}function Gt(){if(!Ut())return Lt.resolve(null);var e=o()(o()({},_e.current),{},{lastActive:Date.now()});return ct.updateItem("activityState",e).then((function(){return _e.current=e}))}var Vt="undefined"==typeof Promise?n(3).Promise:Promise,Wt=At({strategy:"long",continueCb:function(e,t){var n=e&&e.continue_in||null;return Yt.pause=n?{timestamp:Date.now(),wait:n}:null,ct.getFirst("queue").then((function(e){return e?ct.deleteItem("queue",e.timestamp):null})).then((function(){return t(),Yt.running=!1,$t({wait:n})}))}}),Ht=!1,Yt={running:!1,timestamp:null,pause:null};function Jt(){var e=Date.now();return Yt.timestamp&&e<=Yt.timestamp&&(e=Yt.timestamp+1),Yt.timestamp=e,e}function zt(e){return x(e,"session")&&_e.resetSessionOffset(),_e.updateLastActive(),Gt()}function Qt(e){var t=e.url,n=e.method,r=e.params,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=i.auto,u=i.timestamp;_e.updateParams(t,a);var c=I(r||{}).filter((function(e){return O(s()(e,2)[1])})).reduce(D,{}),l={timestamp:Jt(),url:t,method:n,params:o()(o()({},_e.getParams(t)),c)};return u&&(l.createdAt=u),ct.addItem("queue",l).then((function(){return zt(t)})).then((function(){return Yt.running?{}:$t()}))}function Xt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.timestamp,n=e.createdAt,r=e.url,i=e.method,a=e.params,u=arguments.length>1?arguments[1]:void 0,s=_e.current||{},c="/session"===r&&!s.installed,l=!r&&!i&&!a;return Ht&&!c||l?(Yt.running=!1,Vt.resolve({})):Wt.send({url:r,method:i,params:o()(o()({},a),{},{createdAt:pe(n||t)}),wait:u||Zt()})}function Zt(){var e=Yt.pause||{},t=e.timestamp,n=e.wait,r=Date.now()-(t||0);return r0&&void 0!==arguments[0]?arguments[0]:{},t=e.cleanUp,n=e.wait;if(Yt.running)return Vt.resolve({});Yt.running=!0;var r=Vt.resolve({});return t&&(r=r.then(tn)),r.then((function(){return ct.getFirst("queue")})).then((function(e){return Xt(e,n)}))}function en(e){if(void 0!==e)if(e!==Ht){var t=Ht;Ht=e,!e&&t&&$t(),F.info("The app is now in ".concat(e?"offline":"online"," mode"))}else F.error("The app is already in ".concat(e?"offline":"online"," mode"));else F.error("State not provided, true or false has to be defined")}function tn(){var e=Date.now()-Q.requestValidityWindow;return ct.deleteBulk("queue",e,"upperBound")}var nn="undefined"==typeof Promise?n(3).Promise:Promise,rn="No type provided",on="Global parameter type not provided, `callback` or `partner` types are available";function an(e){return(e||[]).map((function(e){return{key:e.key,value:e.value}}))}function un(){return nn.all([ct.filterBy("globalParams","callback"),ct.filterBy("globalParams","partner")]).then((function(e){var t=s()(e,2),n=t[0],r=t[1];return{callbackParams:an(n),partnerParams:an(r)}}))}function sn(e,t){if(void 0===t)return F.error(on),nn.reject({message:rn});var n=N(e),r=Object.keys(n).map((function(e){return{key:e,value:n[e],type:t}}));return nn.all([ct.filterBy("globalParams",t),ct.addBulk("globalParams",r,!0)]).then((function(e){var n=s()(e,2),o=n[0],i=n[1],a=P(o.map((function(e){return e.key})),i.map((function(e){return e[0]})));return F.log("Following ".concat(t," parameters have been saved: ").concat(r.map((function(e){return"".concat(e.key,":").concat(e.value)})).join(", "))),a.length&&F.log("Keys: ".concat(a.join(", ")," already existed so their values have been updated")),i}))}function cn(e,t){return void 0===t?(F.error(on),nn.reject({message:rn})):ct.deleteItem("globalParams",[e,t]).then((function(n){return F.log("".concat(e," ").concat(t," parameter has been deleted")),n}))}function ln(e){return void 0===e?(F.error(on),nn.reject({message:rn})):ct.deleteBulk("globalParams",e).then((function(t){return F.log("All ".concat(e," parameters have been deleted")),t}))}var dn,fn,pn,mn="undefined"==typeof Promise?n(3).Promise:Promise,hn=!1,vn=document;function gn(){return pn=function(){var e=document;if(void 0!==e.hidden)return{hidden:"hidden",visibilityChange:"visibilitychange"};for(var t=I({mozHidden:"mozvisibilitychange",msHidden:"msvisibilitychange",oHidden:"ovisibilitychange",webkitHidden:"webkitvisibilitychange"}),n=0;n0;return!n||n&&1e3*t>=Q.sessionWindow?un().then((function(e){var t,n,r;Qt({url:"/session",method:"POST",params:(t=e,n=t.callbackParams,r=t.partnerParams,{callbackParams:n.length?N(n):null,partnerParams:r.length?N(r):null})},{auto:!0})})):(Le("attribution:check"),Gt())}var Pn="undefined"==typeof Promise?n(3).Promise:Promise,xn=At({url:"/attribution",strategy:"short",continueCb:function(e,t,n){if(!e||e&&"error"===e.status)return t(),Pn.resolve({state:"unknown"});if(!e.ask_in)return t(),function(e){if(b(e)||!function(e){var t=e.adid,n=void 0===t?"":t,r=e.attribution,o=void 0===r?{}:r;return!!n&&!!P(Dn,Object.keys(o)).length}(e)||function(e){var t=e.adid,n=e.attribution,r=_e.current.attribution||{};return!(n&&Dn.some((function(e){return r[e]!==n[e]})))&&t===r.adid}(e))return Pn.resolve({state:"same"});var t=I(e.attribution).filter((function(e){var t=s()(e,1)[0];return-1!==Dn.indexOf(t)})).reduce(D,{adid:e.adid});return _e.current=o()(o()({},_e.current),{},{attribution:t}),Gt().then((function(){return Le("attribution:change",t),F.info("Attribution has been updated"),{state:"changed"}}))}(e);return n(e.ask_in)}}),Dn=["tracker_token","tracker_name","network","campaign","adgroup","creative","click_label","state"];var _n=At({url:"/gdpr_forget_device",method:"POST",strategy:"short"}),In={running:"Adjust SDK is running pending GDPR Forget Me request",pending:"Adjust SDK will run GDPR Forget Me request after initialisation",paused:"Adjust SDK is already prepared to send GDPR Forget Me request",off:"Adjust SDK is already disabled"};function Tn(e){var t=qt();return e||"on"===t?Q.isInitialised()?(_n.send({params:o()({},_e.getParams())}).then((function(){Le("sdk:gdpr-forget-me")})),!0):(F.log(In.pending),!0):(F.log(In[t]),!1)}function On(){return Bt({reason:"gdpr",pending:!1},"finish")}var Cn={running:"Adjust SDK is running pending third-party sharing opt-out request",delayed:"Adjust SDK will run third-party sharing opt-out request after initialisation",pending:"Adjust SDK already queued third-party sharing opt-out request",off:"Third-party sharing opt-out is already done",start:{inProgress:"Third-party sharing opt-out has already started",done:"Third-party sharing opt-out is now started"},finish:{inProgress:"Third-party sharing opt-out has already finished",done:"Third-party sharing opt-out is now finished"}};function jn(){var e=He()||{};return e.reason?e.pending?"pending":"off":"on"}function An(e){var t=jn();return e||"on"===t?Q.isInitialised()?(Qt({url:"/disable_third_party_sharing",method:"POST"}),!0):(F.log(Cn.delayed),!0):(F.log(Cn[t]),!1)}function En(e,t){var n,r,i=He()||{},a="start"===t&&e?"start":"finish",u="start"===t&&i.reason,s="finish"===t&&i.reason&&!i.pending;return u||s?(F.log(Cn[a].inProgress),!1):(F.log(Cn[a].done),r=(n={reason:"general",pending:e})?o()({},n):null,Re.stores[Ke]=o()(o()({},Ue()),{},{thirdPartySharingDisabled:r}),Ge(),!0)}function Rn(){return En(!1,"finish")}function Bn(){"pending"===jn()&&(F.log(Cn.running),An(!0))}var Mn=[];function qn(e,t){Mn.push({method:e,description:t,timestamp:Date.now()})}var Ln="undefined"==typeof Promise?n(3).Promise:Promise;function Kn(e,t){var n,r,i=t.callbackParams,a=t.partnerParams,u={},s=o()({eventToken:e.eventToken},(n=e.revenue,r=e.currency,isNaN(n)||(n=parseFloat(n))<0||!r?{}:{revenue:n.toFixed(5),currency:r})),c=o()(o()({},N(i)),N(e.callbackParams)),l=o()(o()({},N(a)),N(e.partnerParams));return b(c)||(u.callbackParams=c),b(l)||(u.partnerParams=l),o()(o()({},s),u)}function Fn(e){return e?ct.getAll("eventDeduplication").then((function(e){return e.map((function(e){return e.id}))})).then((function(t){return-1===t.indexOf(e)?function(e){var t=Q.getCustomConfig().eventDeduplicationListLimit,n=t>0?t:10;return ct.count("eventDeduplication").then((function(e){var t=Ln.resolve();if(e>=n){var r=e-n+1;F.log("Event deduplication list limit has been reached. Oldest ids are about to be removed (".concat(r," of them)")),t=ct.trimItems("eventDeduplication",r)}return t})).then((function(){return F.info("New event deduplication id is added to the list: ".concat(e)),ct.addItem("eventDeduplication",{id:e})}))}(e):Ln.reject({message:"Event won't be tracked, since it was previously tracked with the same deduplication id ".concat(e)})})):Ln.resolve()}function Un(e){return{clickTime:pe(),source:"web_referrer",referrer:decodeURIComponent(e)}}function Gn(){var e=window.location.search.substring(1).split("&").map((function(e){return e.split("=")})).reduce(D,{}).adjust_referrer;e&&Qt({url:"/sdk_click",method:"POST",params:Un(e)})}var Vn="undefined"==typeof Promise?n(3).Promise:Promise,Wn=null,Hn=!1,Yn=!1,Jn=!1;function zn(){An()&&En(!0,"start")}function Qn(){var e;"paused"===qt()&&(On(),Vn.all([(e={uuid:"unknown"},_e.current=e,ct.clear("activityState").then((function(){return ct.addItem("activityState",e)}))),ct.clear("globalParams"),ct.clear("queue")]).then(er))}function Xn(){return Hn||Q.isInitialised()}function Zn(){Hn=!1,Yn=!1,Mn=[],Wt.clear(),Yt.running=!1,Yt.timestamp=null,Yt.pause=null,hn=!1,_e.toBackground(),Sn(),pn&&(clearTimeout(fn),Ot(vn,pn.visibilityChange,kn)),xn.clear()}function $n(e){e&&F.log("Adjust SDK has been shutdown due to asynchronous disable"),Zn(),Me.forEach(clearTimeout),Me=[],Be={},_e.destroy(),Ot(window,"online",_t),Ot(window,"offline",It),ct.destroy(),Q.destroy()}function er(){Jn=!1,$n(),_n.clear(),Wn=null,F.log("Adjust SDK instance has been destroyed")}function tr(e){F.log("Adjust SDK is starting with web_uuid set to ".concat(e.uuid));var t=_e.current.installed;"paused"===qt()&&(F.log(In.running),Tn(!0)),t||Bn();var n=qt(),r=function(e){return"Adjust SDK start has been interrupted ".concat(e)};return"off"===n?($n(),Vn.reject({interrupted:!0,message:r("due to complete async disable")})):"paused"===n?(Zn(),Vn.reject({interrupted:!0,message:r("due to partial async disable")})):Yn?Vn.reject({interrupted:!0,message:r("due to multiple synchronous start attempt")}):($t({cleanUp:!0}),gn().then((function(){Hn=!1,Yn=!0,t&&(nr(),Bn())})))}function nr(){var e;Jn=!0,Mn.forEach((function(e){"function"==typeof e.method&&(F.log("Delayed ".concat(e.description," task is running now")),e.method(e.timestamp))})),Mn=[],(e="sdk:installed")&&I(Be).some((function(t){var n=s()(t,2)[1];return n.some((function(t,r){if(t.id===e)return n.splice(r,1),!0}))}))}function rr(e){if(e.interrupted)F.log(e.message);else if($n(),F.error("Adjust SDK start has been canceled due to an error",e),e.stack)throw e}function or(e){"off"!==qt()?(Q.set(e),Tt(window,"online",_t),Tt(window,"offline",It),qe("sdk:installed",nr),qe("sdk:shutdown",(function(){return $n(!0)})),qe("sdk:gdpr-forget-me",Qn),qe("sdk:third-party-sharing-opt-out",Rn),qe("attribution:check",(function(e,t){return n=t,r=_e.current,(i=(n||{}).ask_in)||!r.attribution&&r.installed?(xn.send({params:o()({initiatedBy:n?"backend":"sdk"},_e.getParams()),wait:i}),_e.updateSessionOffset(),Gt()):Pn.resolve(r);var n,r,i})),"function"==typeof e.attributionCallback&&qe("attribution:change",e.attributionCallback),(Kt?Lt.reject({interrupted:!0,message:"Adjust SDK start already in progress"}):(Kt=!0,ct.getFirst("activityState").then(Ft).then((function(e){if(e.exists)return Kt=!1,e.stored;var t,n=b(_e.current)?{uuid:(t=Date.now(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"===e?n:11&n).toString(16)})))}:_e.current;return ct.addItem("activityState",n).then((function(){return _e.init(n),Ye(),Kt=!1,n}))})))).then(tr).then(Gn).catch(rr)):F.log("Adjust SDK is disabled, can not start the sdk")}function ir(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.schedule,o=n.stopBeforeInit;ct.getType()!==f?"on"===qt()?r&&o&&!Xn()?F.error("Adjust SDK can not ".concat(e,", sdk instance is not initialized")):"function"==typeof t&&(!r||Jn&&Yn||!o&&!Xn()?t():(qn(t,e),F.log("Running ".concat(e," is delayed until Adjust SDK is up")))):F.log("Adjust SDK is disabled, can not ".concat(e)):F.log("Adjust SDK can not ".concat(e,", no storage available"))}var ar={initSdk:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.logLevel,n=e.logOutput,r=a()(e,["logLevel","logOutput"]);F.setLogLevel(t,n),Xn()?F.error("You already initiated your instance"):Q.hasMissing(r)||(Hn=!0,ct.init(r.namespace).then((function(e){e.type!==f?(F.info("Available storage is ".concat(e.type)),Wn=o()({},r),or(r)):F.error("Adjust SDK can not start, there is no storage available")})))},trackEvent:function(e){ir("track event",(function(t){return function(e,t){if(e&&(!e||!b(e)&&e.eventToken))return Fn(e.deduplicationId).then(un).then((function(n){Qt({url:"/event",method:"POST",params:Kn(e,n)},{timestamp:t})})).catch((function(e){e&&e.message&&F.error(e.message)}));F.error("You must provide event token in order to track event")}(e,t)}),{schedule:!0,stopBeforeInit:!0})},addGlobalCallbackParameters:function(e){ir("add global callback parameters",(function(){return sn(e,"callback")}))},addGlobalPartnerParameters:function(e){ir("add global partner parameters",(function(){return sn(e,"partner")}))},removeGlobalCallbackParameter:function(e){ir("remove global callback parameter",(function(){return cn(e,"callback")}))},removeGlobalPartnerParameter:function(e){ir("remove global partner parameter",(function(){return cn(e,"partner")}))},clearGlobalCallbackParameters:function(){ir("remove all global callback parameters",(function(){return ln("callback")}))},clearGlobalPartnerParameters:function(){ir("remove all global partner parameters",(function(){return ln("partner")}))},switchToOfflineMode:function(){ir("set offline mode",(function(){return en(!0)}))},switchBackToOnlineMode:function(){ir("set online mode",(function(){return en(!1)}))},stop:function(){Mt()&&Q.isInitialised()&&$n()},restart:function(){var e;("gdpr"===(e=Ve()||{}).reason?(F.log("Adjust SDK is disabled due to GDPR-Forget-Me request and it can not be re-enabled"),!1):e.reason?(F.log("Adjust SDK has been enabled"),We(null),!0):(F.log("Adjust SDK is already enabled"),!1))&&Wn&&or(Wn)},gdprForgetMe:function(){var e=Tn();e&&(e=Mt("gdpr",!0))&&Q.isInitialised()&&Zn()},disableThirdPartySharing:function(){ir("disable third-party sharing",zn,{schedule:!0,stopBeforeInit:!1})},__testonly__:{destroy:er,clearDatabase:function(){return ct.deleteDatabase()}}};t.default=ar}]).default})); \ No newline at end of file + */var r;r=function(){"use strict";function e(e){return"function"==typeof e}var r=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},o=0,i=void 0,a=void 0,u=function(e,t){h[o]=e,h[o+1]=t,2===(o+=2)&&(a?a(m):x())},s="undefined"!=typeof window?window:void 0,c=s||{},l=c.MutationObserver||c.WebKitMutationObserver,d="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),f="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var e=setTimeout;return function(){return e(m,1)}}var h=new Array(1e3);function m(){for(var e=0;ee.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=' '},function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,c=[],l=!1,d=-1;function f(){l&&s&&(l=!1,s.length?c=s.concat(c):d=-1,c.length&&p())}function p(){if(!l){var e=u(f);l=!0;for(var t=c.length;t;){for(s=c,c=[];++d1)for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:[];return e.reduce((function(e,t){return o()(o()({},e),{},v()({},t.key,t.value))}),{})}function P(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.filter((function(e){return-1!==t.indexOf(e)}))}function _(e,t){return new RegExp("\\/".concat(t,"(\\/.*|\\?.*){0,1}$")).test(e)}function D(e,t){var n=s()(t,2),r=n[0],i=n[1];return o()(o()({},e),{},v()({},r,i))}function I(e){return Object.keys(e).map((function(t){return[t,e[t]]}))}function N(e){return Object.keys(e).map((function(t){return e[t]}))}function O(e){return x(e)?!b(e):!!e||0===e}var T,j={namespace:"adjust-sdk",version:"5.1.2",env:"production"},A=(T={},v()(T,"none",-1),v()(T,"error",0),v()(T,"warning",1),v()(T,"info",2),v()(T,"verbose",3),T),C={log:" ",info:" ",warn:" ",error:""},E={development:"verbose",production:"error",test:"verbose"},R=M(),B="";function M(){return E[j.env]||"error"}function L(e,t){var n;if(!(A[R]2?u-2:0),c=2;c2&&void 0!==arguments[2]?arguments[2]:[];return n.map((function(n){return xe(e,t,n)}))}function we(e,t,n){var r=ge[t][Pe(e,fe.right)],o=r.fields[r.keyPath],i=n instanceof Array?n.slice():[n],a=(re(o)?o.composite:[r.keyPath]).map((function(e,t){var n=r.fields[e];return be(te(n)?n.values:null,i[t])}));return 1===a.length?a[0]:a}function Se(e){return ge.values[e]||e}function Pe(e,t){return(ge.storeNames[t][e]||{}).name||e}function _e(e,t){return{name:t.name,message:t.message.replace('"'.concat(e,'"'),Pe(e,fe.right))}}!function(e){e.LowerBound="lowerBound",e.UpperBound="upperBound"}(de||(de={})),function(e){e.right="right",e.left="left"}(fe||(fe={}));var De=n(4),Ie=n.n(De),Ne=n(5),Oe=n.n(Ne);function Te(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e+"",r=1;r<=t;r+=1)e0?"-":"+")+Te(Math.floor(Math.abs(t)/60))+Te(Math.abs(t)%60)}(t);return"".concat(n,"T").concat(r,"Z").concat(o)}function Ae(e,t){return isNaN(e)||isNaN(t)?0:Math.abs(t-e)}var Ce={},Ee=!1,Re=!1;function Be(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Ce=Ee?o()({},e):{}}function Me(){Ee&&(Ce.lastInterval=function(){var e=Ce.lastActive;if(e)return Math.round(Ae(e,Date.now())/1e3);return-1}(),Ce.lastActive=Date.now())}function Le(e){Ce=o()(o()({},Ce),e)}function qe(){Re=!0}function Ke(){var e=Ce.lastActive;return Math.round(Ae(e,Date.now())/1e3)}function Ue(){return(Ce.timeSpent||0)+(Re?Ke():0)}function Fe(){var e=Ae(Ce.lastActive,Date.now())<$.sessionWindow,t=Re||!Re&&e;return(Ce.sessionLength||0)+(t?Ke():0)}function Ge(){Ee&&(Le({timeSpent:Ue(),sessionLength:Fe()}),Me())}var ze={get current(){return Ee?o()({},Ce):{}},set current(e){Be(e)},init:function(e){Ee=!0,Be(e)},isStarted:function(){return Ee},toForeground:qe,toBackground:function(){Re=!1},initParams:function(){Ge(),qe()},getParams:function(e){if(!Ee)return null;var t=Ce.lastInterval>=0?Ce.lastInterval:0,n={timeSpent:Ce.timeSpent||0,sessionLength:Ce.sessionLength||0,sessionCount:Ce.sessionCount||1,lastInterval:t||0};return e&&_(e,"event")&&(n.eventCount=Ce.eventCount),n},updateParams:function(e,t){if(Ee){var n={};n.timeSpent=Ue(),n.sessionLength=Fe(),_(e,"session")&&(n.sessionCount=(Ce.sessionCount||0)+1),_(e,"event")&&(n.eventCount=(Ce.eventCount||0)+1),Le(n),t||Me()}},updateInstalled:function(){Ee&&(Ce.installed||Le({installed:!0}))},updateSessionOffset:Ge,updateSessionLength:function(){Ee&&(Le({sessionLength:Fe()}),Me())},resetSessionOffset:function(){Ee&&Le({timeSpent:0,sessionLength:0})},updateLastActive:Me,destroy:function(){Ce={},Ee=!1,Re=!1}},Ve={},We=[];function He(e,t){var n="id"+Math.random().toString(36).substr(2,16),r={id:n,cb:t};return Ve[e]||(Ve[e]=[]),Ve[e].push(r),n}function Ye(e,t){Ve[e]&&Ve[e].forEach((function(n){"function"==typeof n.cb&&We.push(setTimeout((function(){return n.cb(e,t)})))}))}var Je=new(function(){function e(){var t=this;Ie()(this,e),v()(this,"defaultName",j.namespace),v()(this,"storageName",this.defaultName),v()(this,"storeNames",ge.storeNames.left),v()(this,"storesMap",void 0),this.storesMap={};var n=this.read.bind(this),r=this.write.bind(this);N(this.storeNames).forEach((function(e){var o=e.name;Object.defineProperty(t.storesMap,o,{get:function(){return n(o)},set:function(e){r(o,e)}})})),Object.freeze(this.storesMap)}return Oe()(e,[{key:"read",value:function(e){var t=localStorage.getItem("".concat(this.storageName,".").concat(e)),n=t?JSON.parse(t):null;return e===Z.Preferences&&n?xe(Z.Preferences,fe.right,n):n}},{key:"write",value:function(e,t){t?localStorage.setItem("".concat(this.storageName,".").concat(e),JSON.stringify(t instanceof Array?t:xe(Z.Preferences,fe.left,t))):localStorage.removeItem("".concat(this.storageName,".").concat(e))}},{key:"clear",value:function(){this.deleteData()}},{key:"deleteData",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];N(this.storeNames).forEach((function(n){!t&&n.permanent||localStorage.removeItem("".concat(e.storageName,".").concat(n.name))}))}},{key:"setCustomName",value:function(e){var t=this;if(e&&e.length){var n="".concat(j.namespace,"-").concat(e);N(this.storeNames).forEach((function(e){var r=e.name,o=localStorage.getItem("".concat(t.storageName,".").concat(r));o&&localStorage.setItem("".concat(n,".").concat(r),o)})),this.deleteData(!0),this.storageName=n}}},{key:"stores",get:function(){return this.storesMap}}]),e}()),Qe=ie.preferences.name,Xe=Ze();function Ze(){return Xe||$e(),Xe?o()({},Xe):null}function $e(){Xe=Je.stores[Qe]}function et(){var e=Ze();return e?e.sdkDisabled:null}function tt(e){var t=e?o()({},e):null;Je.stores[Qe]=o()(o()({},Ze()),{},{sdkDisabled:t}),$e()}function nt(){var e=Ze();return e?e.thirdPartySharingDisabled:null}function rt(){var e=Je.stores[Qe]||{},t=(Xe||{}).sdkDisabled||null;e.sdkDisabled&&!t&&Ye("sdk:shutdown"),$e()}function ot(){Je.stores[Qe]||(Je.stores[Qe]=o()({},Xe))}var it,at,ut="undefined"==typeof Promise?n(3).Promise:Promise;!function(e){e.add="add",e.put="put",e.get="get",e.list="list",e.clear="clear",e.delete="delete"}(it||(it={})),function(e){e.readonly="readonly",e.readwrite="readwrite"}(at||(at={}));var st=function(){function e(){Ie()(this,e),v()(this,"dbDefaultName",j.namespace),v()(this,"dbName",this.dbDefaultName),v()(this,"dbVersion",1),v()(this,"idbFactory",void 0),v()(this,"indexedDbConnection",null),v()(this,"notSupportedError",{name:"IDBNotSupported",message:"IndexedDB is not supported"}),v()(this,"databaseOpenError",{name:"CannotOpenDatabaseError",message:"Cannot open a database"}),v()(this,"noConnectionError",{name:"NoDatabaseConnection",message:"Cannot open a transaction"});var t=e.getIndexedDB();if(!t)throw this.notSupportedError;this.idbFactory=t}return Oe()(e,[{key:"setCustomName",value:function(e){return e&&e.length>0?(this.dbName="".concat(j.namespace,"-").concat(e),this.migrateDb(this.dbDefaultName,this.dbName)):ut.resolve()}},{key:"openDatabase",value:function(t,n,r){var o=this;return e.isSupported().then((function(e){return e?new ut((function(e,i){var a=o.idbFactory.open(t,r);n&&(a.onupgradeneeded=function(e){return n(e,i)}),a.onsuccess=function(t){var n=t.target.result;n?e(n):i(o.databaseOpenError)},a.onerror=i})):ut.reject(o.notSupportedError)}))}},{key:"databaseExists",value:function(e){var t=this;return new ut((function(n){var r=!0;t.openDatabase(e,(function(){r=!1})).then((function(n){if(n.close(),!r)return t.deleteDatabaseByName(e)})).then((function(){return n(r)}))}))}},{key:"cloneData",value:function(e,t){var n=this;return N(ge.storeNames.left).map((function(e){return e.name})).filter((function(e){return"p"!==e})).map((function(r){return function(){return o=r,i=n.indexedDbConnection,n.indexedDbConnection=e,n.getAll(o).then((function(e){if(n.indexedDbConnection=t,!(e.length<1))return n.addBulk(o,e,!0)})).then((function(){n.indexedDbConnection=i}));var o,i}})).reduce((function(e,t){return e.then(t)}),ut.resolve())}},{key:"migrateDb",value:function(e,t){var n=this;return this.databaseExists(e).then((function(r){return r?ut.all([n.openDatabase(e,n.handleUpgradeNeeded,n.dbVersion),n.openDatabase(t,n.handleUpgradeNeeded,n.dbVersion)]).then((function(t){var r=s()(t,2),o=r[0],i=r[1];return n.cloneData(o,i).then((function(){return n.indexedDbConnection=i,o.close(),n.deleteDatabaseByName(e)}))})).then((function(){return K.info("Database migration finished")})):n.openDatabase(t,n.handleUpgradeNeeded,n.dbVersion).then((function(e){n.indexedDbConnection=e}))}))}},{key:"handleUpgradeNeeded",value:function(e,t){var n=e.target.result;e.target.transaction.onerror=t,e.target.transaction.onabort=t;var r=ge.storeNames.left,o=ze.current||{},i=o&&!b(o);I(r).filter((function(e){return!s()(e,2)[1].permanent})).forEach((function(e){var t=s()(e,2),r=t[0],a=t[1].name,u=ge.right[r],c=n.createObjectStore(a,{keyPath:u.keyPath,autoIncrement:u.autoIncrement||!1});if(u.index&&c.createIndex("".concat(u.index,"Index"),u.index),a===X.ActivityState&&i)return c.add(xe(r,fe.left,o)),void K.info("Activity state has been recovered");var l=Je.stores[a];l&&(l.forEach((function(e){return c.add(e)})),K.info("Migration from localStorage done for ".concat(r," store")))})),ot(),Je.clear()}},{key:"open",value:function(){var e=this;return this.indexedDbConnection?ut.resolve({success:!0}):this.openDatabase(this.dbName,this.handleUpgradeNeeded,this.dbVersion).then((function(t){return e.indexedDbConnection=t,e.indexedDbConnection.onclose=function(){return e.destroy},{success:!0}}))}},{key:"getTransactionStore",value:function(e,t,n){var r,o=e.storeName,i=e.mode,a=n.transaction([o],i),u=a.objectStore(o),s=ge.right[Pe(o,fe.right)];return s.index&&(r=u.index("".concat(s.index,"Index"))),a.onerror=t,a.onabort=t,{transaction:a,store:u,index:r,options:s}}},{key:"overrideError",value:function(e,t){var n=t.target.error;return e({name:n.name,message:n.message})}},{key:"getCompositeKeys",value:function(e){var t=e.fields[e.keyPath];return re(t)?t.composite:null}},{key:"targetIsObject",value:function(e){return x(e)}},{key:"prepareTarget",value:function(e,t,n){if(n===it.clear||!t)return null;var r=this.getCompositeKeys(e);return-1!==[it.add,it.put].indexOf(n)?this.targetIsObject(t)?r?o()(v()({},e.keyPath,r.map((function(e){return t[e]})).join("")),t):t:null:t instanceof Array?t.join(""):t}},{key:"prepareResult",value:function(e,t){var n=this.getCompositeKeys(e);return n&&this.targetIsObject(t)?n.map((function(e){return t[e]})):null}},{key:"initRequest",value:function(e){var t=this,n=e.storeName,r=e.target,o=void 0===r?null:r,i=e.action,a=e.mode,u=void 0===a?at.readonly:a;return this.open().then((function(){return new ut((function(e,r){if(t.indexedDbConnection){var a=t.getTransactionStore({storeName:n,mode:u},r,t.indexedDbConnection),s=a.store,c=a.options,l=s[i](t.prepareTarget(c,o,i)),d=t.prepareResult(c,o);l.onsuccess=function(){i!==it.get||l.result?e(d||l.result||o):r({name:"NotRecordFoundError",message:'Requested record not found in "'.concat(n,'" store')})},l.onerror=function(e){return t.overrideError(r,e)}}else r(t.noConnectionError)}))}))}},{key:"initBulkRequest",value:function(e){var t=this,n=e.storeName,r=e.target,o=e.action,i=e.mode,a=void 0===i?at.readwrite:i;return!r||r&&!r.length?ut.reject({name:"NoTargetDefined",message:"No array provided to perform ".concat(o,' bulk operation into "').concat(n,'" store')}):this.open().then((function(){return new ut((function(e,i){if(t.indexedDbConnection){var u=t.getTransactionStore({storeName:n,mode:a},i,t.indexedDbConnection),s=u.transaction,c=u.store,l=u.options,d=new Array,f=r[0];s.oncomplete=function(){return e(d)};!function e(n){n.onerror=function(e){return t.overrideError(i,e)},n.onsuccess=function(){d.push(t.prepareResult(l,f)||n.result),f=r[d.length],d.length1&&void 0!==arguments[1]&&arguments[1];return this.openCursor({storeName:e,action:it.list,firstOnly:t})}},{key:"getFirst",value:function(e){return this.getAll(e,!0).then((function(e){return e.length?e[0]:void 0}))}},{key:"getItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:it.get})}},{key:"filterBy",value:function(e,t){var n=IDBKeyRange.only(t);return this.openCursor({storeName:e,action:it.list,range:n})}},{key:"addItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:it.add,mode:at.readwrite})}},{key:"addBulk",value:function(e,t,n){return this.initBulkRequest({storeName:e,target:t,action:n?it.put:it.add,mode:at.readwrite})}},{key:"updateItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:it.put,mode:at.readwrite})}},{key:"deleteItem",value:function(e,t){return this.initRequest({storeName:e,target:t,action:it.delete,mode:at.readwrite})}},{key:"deleteBulk",value:function(e,t,n){var r=n?IDBKeyRange[n](t):IDBKeyRange.only(t);return this.openCursor({storeName:e,action:it.delete,range:r,mode:at.readwrite})}},{key:"trimItems",value:function(e,t){var n=this,r=ge.right[Pe(e,fe.right)];return this.getAll(e).then((function(e){return e.length?e[t-1]:null})).then((function(t){return t?n.deleteBulk(e,t[r.keyPath],de.UpperBound):[]}))}},{key:"count",value:function(e){var t=this;return this.open().then((function(){return new ut((function(n,r){if(t.indexedDbConnection){var o=t.getTransactionStore({storeName:e,mode:at.readonly},r,t.indexedDbConnection).store.count();o.onsuccess=function(){return n(o.result)},o.onerror=function(e){return t.overrideError(r,e)}}else r(t.noConnectionError)}))}))}},{key:"clear",value:function(e){return this.initRequest({storeName:e,action:it.clear,mode:at.readwrite})}},{key:"destroy",value:function(){this.indexedDbConnection&&this.indexedDbConnection.close(),this.indexedDbConnection=null}},{key:"deleteDatabase",value:function(){return this.destroy(),this.deleteDatabaseByName(this.dbName)}}],[{key:"tryOpen",value:function(t){return new ut((function(n){try{var r=t.open(e.dbValidationName);r.onsuccess=function(){r.result.close(),t.deleteDatabase(e.dbValidationName),n(!0)},r.onerror=function(){return n(!1)}}catch(e){n(!1)}}))}},{key:"isSupported",value:function(){return e.isSupportedPromise||(e.isSupportedPromise=new ut((function(t){var n=e.getIndexedDB(),r=!!navigator.platform&&/iPad|iPhone|iPod/.test(navigator.platform);!n||r?(K.warn("IndexedDB is not supported in this browser"),t(!1)):t(e.tryOpen(n).then((function(e){return e||K.warn("IndexedDB is not supported in this browser"),e})))}))),e.isSupportedPromise}},{key:"getIndexedDB",value:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}}]),e}();v()(st,"dbValidationName","validate-db-openable"),v()(st,"isSupportedPromise",null);var ct="undefined"==typeof Promise?n(3).Promise:Promise,lt=function(){function e(){Ie()(this,e)}return Oe()(e,[{key:"open",value:function(){return e.isSupported().then((function(e){if(!e)return{status:"error",error:{name:"LSNotSupported",message:"LocalStorage is not supported"}};var t=ge.storeNames.left,n=ze.current||{},r=n&&!b(n);return I(t).filter((function(e){return!s()(e,2)[1].permanent})).forEach((function(e){var t=s()(e,2),o=t[0],i=t[1].name;i!==X.ActivityState||Je.stores[i]?Je.stores[i]||(Je.stores[i]=[]):Je.stores[i]=r?[xe(o,fe.left,n)]:[]})),ot(),{status:"success"}}))}},{key:"getCompositeKeys",value:function(e){var t=e.fields[e.keyPath];return re(t)?t.composite:null}},{key:"getKeys",value:function(e){var t=Pe(e,fe.right),n=ge.right[t];return this.getCompositeKeys(n)||[n.keyPath]}},{key:"nextIndex",value:function(e){return"number"==typeof e?e+1:void 0}},{key:"initRequest",value:function(e,t){var n=this,r=e.storeName,i=e.id,a=e.item,u=ge.right[Pe(r,fe.right)];return this.open().then((function(e){return"error"===e.status?ct.reject(e.error):new ct((function(e,s){var c,l=Je.stores[r],d=n.getKeys(r),f=(l[l.length-1]||{})[u.keyPath]||0;if(i){var p=Array.isArray(i)?i.slice():[i];c=d.map((function(e,t){return[e,p[t]]})).reduce(D,{})}else c=o()({},a);var h=c?w(l,d,c):0;return t(e,s,{keys:d,items:l,index:h,options:u,lastId:f})}))}))}},{key:"sort",value:function(e,t,n){var r=l()(e),o=t.slice().reverse();return r.sort((function(e,t){return o.reduce((function(r,o){return r||function(e,t,r){var o=n?n===e[r]:e[r]e[r]:e[r]>t[r];return o?-1:i?1:0}(e,t,o)}),0)}))}},{key:"prepareTarget",value:function(e,t,n){var r=this.getCompositeKeys(e);return r?o()(v()({},e.keyPath,r.map((function(e){return t[e]})).join("")),t):e.autoIncrement&&n?o()(v()({},e.keyPath,n),t):o()({},t)}},{key:"prepareResult",value:function(e,t){var n=this.getCompositeKeys(e);return n?n.map((function(e){return t[e]})).filter((function(e){return!ye(e)})):t[e.keyPath]}},{key:"getAll",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.open().then((function(r){return"error"===r.status?ct.reject(r.error):new ct((function(r,o){var i=Je.stores[e];i instanceof Array?r(n?[i[0]]:t.sort(i,t.getKeys(e))):o({name:"NotFoundError",message:"No objectStore named ".concat(e," in this database")})}))}))}},{key:"getFirst",value:function(e){return this.getAll(e,!0).then((function(e){return e.length?e[0]:void 0}))}},{key:"getItem",value:function(e,t){var n=this;return this.initRequest({storeName:e,id:t},(function(t,r,o){var i=o.items,a=o.index,u=o.options;-1===a?r({name:"NotRecordFoundError",message:'Requested record not found in "'.concat(e,'" store')}):t(n.prepareTarget(u,i[a]))}))}},{key:"filterBy",value:function(e,t){return this.getAll(e).then((function(n){return n.filter((function(n){var r=ge.right[Pe(e,fe.right)];return(r.index&&n[r.index])===t}))}))}},{key:"addItem",value:function(e,t){var n=this;return this.initRequest({storeName:e,item:t},(function(r,o,i){var a=i.items,u=i.index,s=i.options,c=i.lastId;-1!==u?o({name:"ConstraintError",message:'Constraint was not satisfied, trying to add existing item into "'.concat(e,'" store')}):(a.push(n.prepareTarget(s,t,n.nextIndex(c))),Je.stores[e]=a,r(n.prepareResult(s,t)))}))}},{key:"addBulk",value:function(e,t,n){var r=this;return this.initRequest({storeName:e},(function(o,i,a){var u=a.keys,s=a.items,c=a.options,d=a.lastId;if(!t||t&&!t.length)i({name:"NoTargetDefined",message:'No array provided to perform add bulk operation into "'.concat(e,'" store')});else{var f=d,p=t.map((function(e){return r.prepareTarget(c,e,f=r.nextIndex(f))})),h=p.filter((function(e){return-1!==w(s,u,e)})).map((function(e){return e[c.keyPath]})),m=n?s.filter((function(e){return-1===h.indexOf(e[c.keyPath])})):l()(s);if(h.length&&!n)i({name:"ConstraintError",message:'Constraint was not satisfied, trying to add existing items into "'.concat(e,'" store')});else Je.stores[e]=r.sort([].concat(l()(m),l()(p)),u),o(t.map((function(e){return r.prepareResult(c,e)})))}}))}},{key:"updateItem",value:function(e,t){var n=this;return this.initRequest({storeName:e,item:t},(function(r,o,i){var a=i.items,u=i.index,s=i.options,c=i.lastId,l=-1===u?n.nextIndex(c):void 0,d=n.prepareTarget(s,t,l);-1===u?a.push(d):a.splice(u,1,d),Je.stores[e]=a,r(n.prepareResult(s,t))}))}},{key:"deleteItem",value:function(e,t){return this.initRequest({storeName:e,id:t},(function(n,r,o){var i=o.items,a=o.index;-1!==a&&(i.splice(a,1),Je.stores[e]=i),n(t)}))}},{key:"findMax",value:function(e,t,n){if(!e.length)return-1;for(var r={index:-1,value:"string"==typeof n?"":0},o=0;o=r.value&&(r={value:e[o][t],index:o})}return r.index}},{key:"deleteBulk",value:function(e,t,n){var r=this;return this.getAll(e).then((function(o){var i=r.getKeys(e),a=ge.right[Pe(e,fe.right)].index||i[0],u=n?null:t,s=r.sort(o,i,u),c=r.findMax(s,a,t);if(-1===c)return[];var l=n===de.LowerBound?c:0,d=n&&n!==de.UpperBound?s.length:c+1,f=s.splice(l,d).map((function(e){return 1===i.length?e[a]:i.map((function(t){return e[t]}))}));return Je.stores[e]=s,f}))}},{key:"trimItems",value:function(e,t){var n=this,r=Pe(e,fe.right),o=ge.right[r];return this.getAll(e).then((function(e){return e.length?e[t-1]:null})).then((function(t){return t?n.deleteBulk(e,t[o.keyPath],de.UpperBound):[]}))}},{key:"count",value:function(e){return this.open().then((function(t){if("error"===t.status)return ct.reject(t.error);var n=Je.stores[e];return ct.resolve(n instanceof Array?n.length:1)}))}},{key:"clear",value:function(e){return this.open().then((function(t){return"error"===t.status?ct.reject(t.error):new ct((function(t){Je.stores[e]=[],t()}))}))}},{key:"destroy",value:function(){}},{key:"deleteDatabase",value:function(){}}],[{key:"isSupported",value:function(){if(e.isSupportedPromise)return e.isSupportedPromise;var t=(new Date).toString(),n=window.localStorage;return e.isSupportedPromise=new ct((function(e){n.setItem(t,t);var r=n.getItem(t)===t;n.removeItem(t),e(!(!r||!n))})).catch((function(){return K.warn("LocalStorage is not supported in this browser"),ct.resolve(!1)})),e.isSupportedPromise}}]),e}();v()(lt,"isSupportedPromise",null);var dt,ft,pt="undefined"==typeof Promise?n(3).Promise:Promise;(ft=dt||(dt={}))[ft.noStorage=f]="noStorage",ft[ft.indexedDB=p]="indexedDB",ft[ft.localStorage=h]="localStorage";var ht,mt={getAll:function(e,t,n){return e.getAll(t,n).then((function(e){return ke(t,fe.right,e)}))},getFirst:function(e,t){return e.getFirst(t).then((function(e){return xe(t,fe.right,e)}))},getItem:function(e,t,n){return e.getItem(t,we(t,fe.left,n)).then((function(e){return xe(t,fe.right,e)})).catch((function(e){return pt.reject(_e(t,e))}))},filterBy:function(e,t,n){return e.filterBy(t,Se(n)).then((function(e){return ke(t,fe.right,e)}))},addItem:function(e,t,n){var r=xe(t,fe.left,n);return e.addItem(t,r).then((function(e){return we(t,fe.right,e)})).catch((function(e){return pt.reject(_e(t,e))}))},addBulk:function(e,t,n,r){var o=ke(t,fe.left,n);return e.addBulk(t,o,r).then((function(e){return e.map((function(e){return we(t,fe.right,e)}))})).catch((function(e){return pt.reject(_e(t,e))}))},updateItem:function(e,t,n){var r=xe(t,fe.left,n);return e.updateItem(t,r).then((function(e){return we(t,fe.right,e)}))},deleteItem:function(e,t,n){return e.deleteItem(t,we(t,fe.left,n)).then((function(e){return we(t,fe.right,e)}))},deleteBulk:function(e,t,n,r){return e.deleteBulk(t,Se(n),r).then((function(e){return e.map((function(e){return we(t,fe.right,e)}))}))},trimItems:function(e,t,n){return e.trimItems(t,n)},count:function(e,t){return e.count(t)},clear:function(e,t){return e.clear(t)},destroy:function(e){return e.destroy()},deleteDatabase:function(e){return e.deleteDatabase()}};var vt=null;function gt(e){var t=null;return null!==vt?vt:vt=pt.all([st.isSupported(),lt.isSupported()]).then((function(n){var r=s()(n,2),o=r[0],i=r[1];if(Je.setCustomName(e),o){ht=dt.indexedDB;var a=new st;return a.setCustomName(e).then((function(){return t=a}))}return i?(ht=dt.localStorage,t=new lt,pt.resolve(t)):(K.error("There is no storage available, app will run with minimum set of features"),ht=dt.noStorage,t=null,pt.resolve(t))})).then((function(){return{type:ht,storage:t}}))}var yt,bt,xt=o()({init:gt,getType:function(){return ht}},I(mt).map((function(e){var t=s()(e,2),n=t[0],r=t[1];return[n,function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o2&&void 0!==arguments[2]&&arguments[2];return{status:"error",action:n?"CONTINUE":"RETRY",response:k(e.responseText)?JSON.parse(e.responseText):e.responseText,message:d[t],code:t}}function Nt(e,t){var n=e.slice(0,e.length-t.length-1).split("").reduce((function(e){return e.concat(" ")}),"");return"".concat(t).concat(n,":")}function Ot(e,t){var n=function(e){return e.replace(/([A-Z])/g,(function(e){return"_".concat(e.toLowerCase())}))},r=I(o()(o()(o()({},$.getBaseParams()),t),e)).map((function(e){var t=s()(e,2),r=t[0],o=t[1];return[n(r),o]}));return K.log("REQUEST PARAMETERS:"),r.filter((function(e){return O(s()(e,2)[1])})).map((function(e){var t=s()(e,2),n=t[0],r=t[1];return K.log(Nt("REQUEST PARAMETERS:",n),r),function(e){var t=s()(e,2),n=t[0],r=t[1],o=encodeURIComponent(n),i=r;return"string"==typeof r&&(i=encodeURIComponent(r)),x(r)&&(i=encodeURIComponent(JSON.stringify(r)||"")),[o,i].join("=")}([n,r])})).join("&")}function Tt(e,t,n){var r=n.xhr,o=n.url;if(4===r.readyState){var i=r.status>=200&&r.status<300,a=k(r.responseText);if(0!==r.status)return a?t(i?function(e,t){var n=JSON.parse(e.responseText),r={status:"success",adid:n.adid,timestamp:n.timestamp,ask_in:n.ask_in,retry_in:n.retry_in,continue_in:n.continue_in,tracking_state:n.tracking_state,attribution:void 0,message:void 0};return _(t,"attribution")&&(r.attribution=n.attribution,r.message=n.message),I(r).filter((function(e){return!!s()(e,2)[1]})).reduce(D,{})}(r,o):It(r,"SERVER_CANNOT_PROCESS",!0)):e(It(r,i?"SERVER_MALFORMED_RESPONSE":"SERVER_INTERNAL_ERROR"));e(It(r,"NO_CONNECTION"))}}function jt(e,t,n){var r=e.url,o=e.method,i=void 0===o?"GET":o,a=e.params,u=function(e,t,n){var r=e.url,o=e.method,i=Ot(e.params,t);return{fullUrl:n["/gdpr_forget_device"===r?"gdpr":"app"]+r+("GET"===o?"?".concat(i):""),encodedParams:i}}({url:r,method:i,params:void 0===a?{}:a},t,n),c=u.fullUrl,l=u.encodedParams;return new Dt((function(e,t){var n=new XMLHttpRequest;n.open(i,c,!0),function(e,t){var n=[["Client-SDK","js".concat(j.version)],["Content-Type","POST"===t?"application/x-www-form-urlencoded":"application/json"]];K.log("REQUEST HEADERS:"),n.forEach((function(t){var n=s()(t,2),r=n[0],o=n[1];e.setRequestHeader(r,o),K.log(Nt("REQUEST HEADERS:",r),o)}))}(n,i),n.onreadystatechange=function(){return Tt(t,e,{xhr:n,url:r})},n.onerror=function(){return t(It(n,"TRANSACTION_ERROR"))},n.send("GET"===i?void 0:l)}))}function At(e,t){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Pt,n=St();if(Array.isArray(n)){var r=0,o=function o(){var i=n[r++],a=t[i];return e(a).catch((function(e){if("NO_CONNECTION"===e.code&&(K.log("Failed to connect ".concat(_t[i]," endpoint")),r0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,n=e.method,r=void 0===n?"GET":n,i=e.params,a=void 0===i?{}:i,u=e.continueCb,c=e.strategy,l=e.wait,f={url:t,method:r,params:a,continueCb:u},p=t,h=r,m=o()({},a),v=u,g=c,y=null,x={request:0,connection:0},k=S(l),w=null;function S(e){return(e=e||150)>2147483647?2147483647:e}function P(e){var t=e.url,n=e.method,r=e.params,i=e.continueCb;t&&(p=t),n&&(h=n),b(r)||(m=o()({},r)),m=o()({createdAt:je()},m),"function"==typeof i&&(v=i)}function _(e){if(!w)return!1;if(y){var t=k-(Date.now()-w);if(e&&t0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,n=e.method,r=e.params,o=void 0===r?{}:r,i=e.continueCb,a=e.wait;return P({url:t,method:n,params:o,continueCb:i}),N({wait:a})}function L(){return!!y}function q(){y&&clearTimeout(y),y=null}function U(){var e=!!w;q(),w=null,e&&(k=150,x.request=0,x.connection=0,K.log("Previous ".concat(p||"unknown"," request attempt canceled")),A())}return{send:M,isRunning:L,clear:U}},Vt=function(e){return"gdpr"===e?"GDPR disable":"disable"},Wt=function(e){return{start:{inProgress:"Adjust SDK ".concat(Vt(e)," process has already started"),done:"Adjust SDK ".concat(Vt(e)," process is now started")},finish:{inProgress:"Adjust SDK ".concat(Vt(e)," process has already finished"),done:"Adjust SDK ".concat(Vt(e)," process is now finished")}}};function Ht(e,t){var n=e.reason,r=e.pending,o=et()||{},i="start"===t&&o.pending?"start":"finish",a="start"===t&&o.reason,u="finish"===t&&o.reason&&!o.pending;return a||u?(K.log(Wt(o.reason)[i].inProgress),!1):(K.log(Wt(n)[i].done),tt({reason:n||"general",pending:r}),!0)}function Yt(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Ht({reason:e,pending:t||!1},"start")}function Jt(){var e=et()||{};return"general"===e.reason||"gdpr"===e.reason&&!e.pending?"off":"gdpr"===e.reason&&e.pending?"paused":"on"}var Qt="undefined"==typeof Promise?n(3).Promise:Promise,Xt=!1;function Zt(e){return e?"unknown"===e.uuid?(Yt({reason:"gdpr"}),ze.destroy(),{exists:!0,stored:null}):(ze.init(e),{exists:!0,stored:e}):{exists:!1}}function $t(){return"off"!==Jt()&&ze.isStarted()}function en(){if(!$t())return Qt.resolve(null);var e=o()(o()({},ze.current),{},{lastActive:Date.now()});return xt.updateItem("activityState",e).then((function(){return ze.current=e}))}var tn="undefined"==typeof Promise?n(3).Promise:Promise,nn=zt({strategy:"long",continueCb:function(e,t){var n=e&&e.continue_in||null;return on.pause=n?{timestamp:Date.now(),wait:n}:null,xt.getFirst("queue").then((function(e){return e?xt.deleteItem("queue",e.timestamp):null})).then((function(){return t(),on.running=!1,dn({wait:n})}))}}),rn=!1,on={running:!1,timestamp:null,pause:null};function an(){var e=Date.now();return on.timestamp&&e<=on.timestamp&&(e=on.timestamp+1),on.timestamp=e,e}function un(e){return _(e,"session")&&ze.resetSessionOffset(),ze.updateLastActive(),en()}function sn(e){var t=e.url,n=e.method,r=e.params,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=i.auto,u=i.timestamp;ze.updateParams(t,a);var c=I(r||{}).filter((function(e){return O(s()(e,2)[1])})).reduce(D,{}),l={timestamp:an(),url:t,method:n,params:o()(o()({},ze.getParams(t)),c)};return u&&(l.createdAt=u),xt.addItem("queue",l).then((function(){return un(t)})).then((function(){return on.running?{}:dn()}))}function cn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.timestamp,n=e.createdAt,r=e.url,i=e.method,a=e.params,u=arguments.length>1?arguments[1]:void 0,s=ze.current||{},c="/session"===r&&!s.installed,l=!r&&!i&&!a;return rn&&!c||l?(on.running=!1,tn.resolve({})):nn.send({url:r,method:i,params:o()(o()({},a),{},{createdAt:je(n||t)}),wait:u||ln()})}function ln(){var e=on.pause||{},t=e.timestamp,n=e.wait,r=Date.now()-(t||0);return r0&&void 0!==arguments[0]?arguments[0]:{},t=e.cleanUp,n=e.wait;if(on.running)return tn.resolve({});on.running=!0;var r=tn.resolve({});return t&&(r=r.then(pn)),r.then((function(){return xt.getFirst("queue")})).then((function(e){return cn(e,n)}))}function fn(e){if(void 0!==e)if(e!==rn){var t=rn;rn=e,!e&&t&&dn(),K.info("The app is now in ".concat(e?"offline":"online"," mode"))}else K.error("The app is already in ".concat(e?"offline":"online"," mode"));else K.error("State not provided, true or false has to be defined")}function pn(){var e=Date.now()-$.requestValidityWindow;return xt.deleteBulk("queue",e,"upperBound")}var hn="undefined"==typeof Promise?n(3).Promise:Promise,mn="No type provided",vn="Global parameter type not provided, `callback` or `partner` types are available";function gn(e){return(e||[]).map((function(e){return{key:e.key,value:e.value}}))}function yn(){return hn.all([xt.filterBy("globalParams","callback"),xt.filterBy("globalParams","partner")]).then((function(e){var t=s()(e,2),n=t[0],r=t[1];return{callbackParams:gn(n),partnerParams:gn(r)}}))}function bn(e,t){if(void 0===t)return K.error(vn),hn.reject({message:mn});var n=S(e),r=Object.keys(n).map((function(e){return{key:e,value:n[e],type:t}}));return hn.all([xt.filterBy("globalParams",t),xt.addBulk("globalParams",r,!0)]).then((function(e){var n=s()(e,2),o=n[0],i=n[1],a=P(o.map((function(e){return e.key})),i.map((function(e){return e[0]})));return K.log("Following ".concat(t," parameters have been saved: ").concat(r.map((function(e){return"".concat(e.key,":").concat(e.value)})).join(", "))),a.length&&K.log("Keys: ".concat(a.join(", ")," already existed so their values have been updated")),i}))}function xn(e,t){return void 0===t?(K.error(vn),hn.reject({message:mn})):xt.deleteItem("globalParams",[e,t]).then((function(n){return K.log("".concat(e," ").concat(t," parameter has been deleted")),n}))}function kn(e){return void 0===e?(K.error(vn),hn.reject({message:mn})):xt.deleteBulk("globalParams",e).then((function(t){return K.log("All ".concat(e," parameters have been deleted")),t}))}var wn,Sn,Pn,_n="undefined"==typeof Promise?n(3).Promise:Promise,Dn=!1,In=document;function Nn(){return Pn=function(){var e=document;if(void 0!==e.hidden)return{hidden:"hidden",visibilityChange:"visibilitychange"};for(var t=I({mozHidden:"mozvisibilitychange",msHidden:"msvisibilitychange",oHidden:"ovisibilitychange",webkitHidden:"webkitvisibilitychange"}),n=0;n0;return!n||n&&1e3*t>=$.sessionWindow?yn().then((function(e){var t,n,r;sn({url:"/session",method:"POST",params:(t=e,n=t.callbackParams,r=t.partnerParams,{callbackParams:n.length?S(n):null,partnerParams:r.length?S(r):null})},{auto:!0})})):(Ye("attribution:check"),en())}var Rn="undefined"==typeof Promise?n(3).Promise:Promise,Bn=zt({url:"/attribution",strategy:"short",continueCb:function(e,t,n){if(!e||e&&"error"===e.status)return t(),Rn.resolve({state:"unknown"});if(!e.ask_in)return t(),function(e){if(b(e)||!function(e){var t=e.adid,n=void 0===t?"":t,r=e.attribution,o=void 0===r?{}:r;return!!n&&!!P(Mn,Object.keys(o)).length}(e)||function(e){var t=e.adid,n=e.attribution,r=ze.current.attribution||{};return!(n&&Mn.some((function(e){return r[e]!==n[e]})))&&t===r.adid}(e))return Rn.resolve({state:"same"});var t=I(e.attribution).filter((function(e){var t=s()(e,1)[0];return-1!==Mn.indexOf(t)})).reduce(D,{adid:e.adid});return ze.current=o()(o()({},ze.current),{},{attribution:t}),en().then((function(){return Ye("attribution:change",t),K.info("Attribution has been updated"),{state:"changed"}}))}(e);return n(e.ask_in)}}),Mn=["tracker_token","tracker_name","network","campaign","adgroup","creative","click_label","state"];var Ln=zt({url:"/gdpr_forget_device",method:"POST",strategy:"short"}),qn={running:"Adjust SDK is running pending GDPR Forget Me request",pending:"Adjust SDK will run GDPR Forget Me request after initialisation",paused:"Adjust SDK is already prepared to send GDPR Forget Me request",off:"Adjust SDK is already disabled"};function Kn(e){var t=Jt();return e||"on"===t?$.isInitialised()?(Ln.send({params:o()({},ze.getParams())}).then((function(){Ye("sdk:gdpr-forget-me")})),!0):(K.log(qn.pending),!0):(K.log(qn[t]),!1)}function Un(){return Ht({reason:"gdpr",pending:!1},"finish")}var Fn={running:"Adjust SDK is running pending third-party sharing opt-out request",delayed:"Adjust SDK will run third-party sharing opt-out request after initialisation",pending:"Adjust SDK already queued third-party sharing opt-out request",off:"Third-party sharing opt-out is already done",start:{inProgress:"Third-party sharing opt-out has already started",done:"Third-party sharing opt-out is now started"},finish:{inProgress:"Third-party sharing opt-out has already finished",done:"Third-party sharing opt-out is now finished"}};function Gn(){var e=nt()||{};return e.reason?e.pending?"pending":"off":"on"}function zn(e){var t=Gn();return e||"on"===t?$.isInitialised()?(sn({url:"/disable_third_party_sharing",method:"POST"}),!0):(K.log(Fn.delayed),!0):(K.log(Fn[t]),!1)}function Vn(e,t){var n,r,i=nt()||{},a="start"===t&&e?"start":"finish",u="start"===t&&i.reason,s="finish"===t&&i.reason&&!i.pending;return u||s?(K.log(Fn[a].inProgress),!1):(K.log(Fn[a].done),r=(n={reason:"general",pending:e})?o()({},n):null,Je.stores[Qe]=o()(o()({},Ze()),{},{thirdPartySharingDisabled:r}),$e(),!0)}function Wn(){return Vn(!1,"finish")}function Hn(){"pending"===Gn()&&(K.log(Fn.running),zn(!0))}var Yn=[];function Jn(e,t){Yn.push({method:e,description:t,timestamp:Date.now()})}var Qn="undefined"==typeof Promise?n(3).Promise:Promise;function Xn(e,t){var n,r,i=t.callbackParams,a=t.partnerParams,u={},s=o()({eventToken:e.eventToken},(n=e.revenue,r=e.currency,isNaN(n)||(n=parseFloat(n))<0||!r?{}:{revenue:n.toFixed(5),currency:r})),c=o()(o()({},S(i)),S(e.callbackParams)),l=o()(o()({},S(a)),S(e.partnerParams));return b(c)||(u.callbackParams=c),b(l)||(u.partnerParams=l),o()(o()({},s),u)}function Zn(e){return e?xt.getAll("eventDeduplication").then((function(e){return e.map((function(e){return e.id}))})).then((function(t){return-1===t.indexOf(e)?function(e){var t=$.getCustomConfig().eventDeduplicationListLimit,n=t>0?t:10;return xt.count("eventDeduplication").then((function(e){var t=Qn.resolve();if(e>=n){var r=e-n+1;K.log("Event deduplication list limit has been reached. Oldest ids are about to be removed (".concat(r," of them)")),t=xt.trimItems("eventDeduplication",r)}return t})).then((function(){return K.info("New event deduplication id is added to the list: ".concat(e)),xt.addItem("eventDeduplication",{id:e})}))}(e):Qn.reject({message:"Event won't be tracked, since it was previously tracked with the same deduplication id ".concat(e)})})):Qn.resolve()}function $n(e){return{clickTime:je(),source:"web_referrer",referrer:decodeURIComponent(e)}}function er(){var e=window.location.search.substring(1).split("&").map((function(e){return e.split("=")})).reduce(D,{}).adjust_referrer;e&&sn({url:"/sdk_click",method:"POST",params:$n(e)})}var tr=n(11),nr=n.n(tr),rr=(n(21),new(function(){function e(){Ie()(this,e),v()(this,"parent",void 0),v()(this,"banner",void 0)}return Oe()(e,[{key:"getBanners",value:function(e){return{parentId:"",image:"",header:"Adjust Smart Banners",description:"Not so smart actually, but deep links do the magic anyway",buttonText:"Let's go!"}}},{key:"init",value:function(e){K.info("Initialise Smart Banner");var t=this.getBanners(e);this.parent=t.parentId&&document.getElementById(t.parentId)||document.body,this.banner=document.createElement("div"),this.banner.setAttribute("class","banner"),this.banner.innerHTML=nr.a,this.parent.appendChild(this.banner)}},{key:"showBanner",value:function(){this.banner?this.banner.hidden=!1:K.error("There is no Smart Banner to show, have you called initialisation?")}},{key:"hideBanner",value:function(){this.banner?this.banner.hidden=!0:K.error("There is no Smart Banner to hide, have you called initialisation?")}}]),e}())),or=["logLevel","logOutput"],ir="undefined"==typeof Promise?n(3).Promise:Promise,ar=null,ur=!1,sr=!1,cr=!1;function lr(){zn()&&Vn(!0,"start")}function dr(){var e;"paused"===Jt()&&(Un(),ir.all([(e={uuid:"unknown"},ze.current=e,xt.clear("activityState").then((function(){return xt.addItem("activityState",e)}))),xt.clear("globalParams"),xt.clear("queue")]).then(mr))}function fr(){return ur||$.isInitialised()}function pr(){ur=!1,sr=!1,Yn=[],nn.clear(),on.running=!1,on.timestamp=null,on.pause=null,Dn=!1,ze.toBackground(),Cn(),Pn&&(clearTimeout(Sn),Ut(In,Pn.visibilityChange,jn)),Bn.clear()}function hr(e){e&&K.log("Adjust SDK has been shutdown due to asynchronous disable"),pr(),We.forEach(clearTimeout),We=[],Ve={},ze.destroy(),Ut(window,"online",Lt),Ut(window,"offline",qt),xt.destroy(),$.destroy()}function mr(){cr=!1,hr(),Ln.clear(),ar=null,K.log("Adjust SDK instance has been destroyed")}function vr(e){K.log("Adjust SDK is starting with web_uuid set to ".concat(e.uuid));var t=ze.current.installed;"paused"===Jt()&&(K.log(qn.running),Kn(!0)),t||Hn();var n=Jt(),r=function(e){return"Adjust SDK start has been interrupted ".concat(e)};return"off"===n?(hr(),ir.reject({interrupted:!0,message:r("due to complete async disable")})):"paused"===n?(pr(),ir.reject({interrupted:!0,message:r("due to partial async disable")})):sr?ir.reject({interrupted:!0,message:r("due to multiple synchronous start attempt")}):(dn({cleanUp:!0}),Nn().then((function(){ur=!1,sr=!0,t&&(gr(),Hn())})))}function gr(){var e;cr=!0,Yn.forEach((function(e){"function"==typeof e.method&&(K.log("Delayed ".concat(e.description," task is running now")),e.method(e.timestamp))})),Yn=[],(e="sdk:installed")&&I(Ve).some((function(t){var n=s()(t,2)[1];return n.some((function(t,r){if(t.id===e)return n.splice(r,1),!0}))}))}function yr(e){if(e.interrupted)K.log(e.message);else if(hr(),K.error("Adjust SDK start has been canceled due to an error",e),e.stack)throw e}function br(e){"off"!==Jt()?($.set(e),Kt(window,"online",Lt),Kt(window,"offline",qt),He("sdk:installed",gr),He("sdk:shutdown",(function(){return hr(!0)})),He("sdk:gdpr-forget-me",dr),He("sdk:third-party-sharing-opt-out",Wn),He("attribution:check",(function(e,t){return n=t,r=ze.current,(i=(n||{}).ask_in)||!r.attribution&&r.installed?(Bn.send({params:o()({initiatedBy:n?"backend":"sdk"},ze.getParams()),wait:i}),ze.updateSessionOffset(),en()):Rn.resolve(r);var n,r,i})),"function"==typeof e.attributionCallback&&He("attribution:change",e.attributionCallback),(Xt?Qt.reject({interrupted:!0,message:"Adjust SDK start already in progress"}):(Xt=!0,xt.getFirst("activityState").then(Zt).then((function(e){if(e.exists)return Xt=!1,e.stored;var t,n=b(ze.current)?{uuid:(t=Date.now(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"===e?n:11&n).toString(16)})))}:ze.current;return xt.addItem("activityState",n).then((function(){return ze.init(n),rt(),Xt=!1,n}))})))).then(vr).then(er).catch(yr)):K.log("Adjust SDK is disabled, can not start the sdk")}function xr(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.schedule,o=n.stopBeforeInit;xt.getType()!==f?"on"===Jt()?r&&o&&!fr()?K.error("Adjust SDK can not ".concat(e,", sdk instance is not initialized")):"function"==typeof t&&(!r||cr&&sr||!o&&!fr()?t():(Jn(t,e),K.log("Running ".concat(e," is delayed until Adjust SDK is up")))):K.log("Adjust SDK is disabled, can not ".concat(e)):K.log("Adjust SDK can not ".concat(e,", no storage available"))}var kr={initSdk:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.logLevel,n=e.logOutput,r=a()(e,or);K.setLogLevel(t,n),fr()?K.error("You already initiated your instance"):$.hasMissing(r)||(ur=!0,xt.init(r.namespace).then((function(e){e.type!==f?(K.info("Available storage is ".concat(e.type)),ar=o()({},r),br(r)):K.error("Adjust SDK can not start, there is no storage available")})))},trackEvent:function(e){xr("track event",(function(t){return function(e,t){if(e&&(!e||!b(e)&&e.eventToken))return Zn(e.deduplicationId).then(yn).then((function(n){sn({url:"/event",method:"POST",params:Xn(e,n)},{timestamp:t})})).catch((function(e){e&&e.message&&K.error(e.message)}));K.error("You must provide event token in order to track event")}(e,t)}),{schedule:!0,stopBeforeInit:!0})},addGlobalCallbackParameters:function(e){xr("add global callback parameters",(function(){return bn(e,"callback")}))},addGlobalPartnerParameters:function(e){xr("add global partner parameters",(function(){return bn(e,"partner")}))},removeGlobalCallbackParameter:function(e){xr("remove global callback parameter",(function(){return xn(e,"callback")}))},removeGlobalPartnerParameter:function(e){xr("remove global partner parameter",(function(){return xn(e,"partner")}))},clearGlobalCallbackParameters:function(){xr("remove all global callback parameters",(function(){return kn("callback")}))},clearGlobalPartnerParameters:function(){xr("remove all global partner parameters",(function(){return kn("partner")}))},switchToOfflineMode:function(){xr("set offline mode",(function(){return fn(!0)}))},switchBackToOnlineMode:function(){xr("set online mode",(function(){return fn(!1)}))},stop:function(){Yt()&&$.isInitialised()&&hr()},restart:function(){var e;("gdpr"===(e=et()||{}).reason?(K.log("Adjust SDK is disabled due to GDPR-Forget-Me request and it can not be re-enabled"),!1):e.reason?(K.log("Adjust SDK has been enabled"),tt(null),!0):(K.log("Adjust SDK is already enabled"),!1))&&ar&&br(ar)},gdprForgetMe:function(){var e=Kn();e&&(e=Yt("gdpr",!0))&&$.isInitialised()&&pr()},disableThirdPartySharing:function(){xr("disable third-party sharing",lr,{schedule:!0,stopBeforeInit:!1})},initSmartBanner:function(e){var t=e.appWebToken;rr.init(t)},showSmartBanner:function(){rr.showBanner()},hideSmartBanner:function(){rr.hideBanner()},__testonly__:{destroy:mr,clearDatabase:function(){return xt.deleteDatabase()}}};t.default=kr}]).default})); \ No newline at end of file diff --git a/dist/sdk.snippet.min.js b/dist/sdk.snippet.min.js index 890eff6..aa9e2aa 100644 --- a/dist/sdk.snippet.min.js +++ b/dist/sdk.snippet.min.js @@ -1 +1 @@ -!function(t,a,e,r,s,l,d,n,o){t.Adjust=t.Adjust||{},t.Adjust_q=t.Adjust_q||[];for(var c=0;c= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/jest/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@types/jest/node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@types/json-schema": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", @@ -19592,6 +19770,146 @@ "@types/istanbul-lib-report": "*" } }, + "@types/jest": { + "version": "26.0.23", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", + "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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": "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 + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "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 + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "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" + } + } + } + }, "@types/json-schema": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", diff --git a/package.json b/package.json index 1c99611..f7a9ae4 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,9 @@ "@babel/preset-env": "^7.12.13", "@babel/preset-flow": "^7.12.13", "@babel/preset-typescript": "^7.12.13", + "@types/jest": "^26.0.23", "@typescript-eslint/eslint-plugin": "^4.14.2", "@typescript-eslint/parser": "^4.14.2", - "@types/jest": "^26.0.23", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "babel-loader": "^8.2.2", diff --git a/src/demo/tabs/tabs.js b/src/demo/tabs/tabs.js index 4971114..42e44dd 100644 --- a/src/demo/tabs/tabs.js +++ b/src/demo/tabs/tabs.js @@ -123,6 +123,9 @@ function _prepareForm () { ...appConfig, attributionCallback: _handleAttributionChange }) + Adjust.initSmartBanner({ + appWebToken: '123abc' + }) _form.appToken = _ui.appConfigForm.querySelector('#app-token') _form.environment = _ui.appConfigForm.querySelector('#environment') diff --git a/src/sdk/main.js b/src/sdk/main.js index 792fad1..ee74e4c 100644 --- a/src/sdk/main.js +++ b/src/sdk/main.js @@ -25,6 +25,7 @@ import event from './event' import sdkClick from './sdk-click' import ActivityState from './activity-state' import { STORAGE_TYPES } from './constants' +import { SmartBanner } from './smart-banner/smart-banner' type InitConfigT = $ReadOnly<{|...InitOptionsT, ...LogOptionsT|}> @@ -222,6 +223,18 @@ function disableThirdPartySharing (): void { }) } +function initSmartBanner ({ appWebToken }: { appWebToken: string }): void { + SmartBanner.init(appWebToken) +} + +function showSmartBanner (): void { + SmartBanner.showBanner() +} + +function hideSmartBanner (): void { + SmartBanner.hideBanner() +} + /** * Handle third party sharing disable * @@ -498,6 +511,9 @@ const Adjust = { restart, gdprForgetMe, disableThirdPartySharing, + initSmartBanner, + showSmartBanner, + hideSmartBanner, __testonly__: { destroy: _destroy, clearDatabase: _clearDatabase diff --git a/src/sdk/smart-banner/smart-banner.ts b/src/sdk/smart-banner/smart-banner.ts new file mode 100644 index 0000000..030939b --- /dev/null +++ b/src/sdk/smart-banner/smart-banner.ts @@ -0,0 +1,57 @@ +import Log from './../logger' +import template from './template.html' +import './styles.scss' + +/** + * Adjust Web SDK Smart Banner + */ +class SmartBanner { + private parent: HTMLElement; + private banner: HTMLElement; + + /** + * Loads banners from backend if available + */ + private getBanners(appWebToken: string) { + return { + parentId: '', + image: '', + header: 'Adjust Smart Banners', + description: 'Not so smart actually, but deep links do the magic anyway', + buttonText: 'Let\'s go!' + } + } + + init(appWebToken: string): void { + Log.info('Initialise Smart Banner') + + const banner = this.getBanners(appWebToken) + + this.parent = banner.parentId && document.getElementById(banner.parentId) || document.body + this.banner = document.createElement('div') + this.banner.setAttribute('class', 'banner') + this.banner.innerHTML = template + + this.parent.appendChild(this.banner) + } + + showBanner(): void { + if (this.banner) { + this.banner.hidden = false + } else { + Log.error('There is no Smart Banner to show, have you called initialisation?') + } + } + + hideBanner(): void { + if (this.banner) { + this.banner.hidden = true + } else { + Log.error('There is no Smart Banner to hide, have you called initialisation?') + } + } +} + +const smartBanner = new SmartBanner() + +export { smartBanner as SmartBanner } diff --git a/src/sdk/smart-banner/styles.scss b/src/sdk/smart-banner/styles.scss new file mode 100644 index 0000000..f01fb5e --- /dev/null +++ b/src/sdk/smart-banner/styles.scss @@ -0,0 +1,37 @@ +@import "../../assets/scss/flex-grid"; + +$adjustBlue: #00bed5; + +.banner { + width: 100vw; + position: fixed; + left: 0; + bottom: 0; + background-color: white; + + .banner-body { + align-items: center; + margin: 2px 8px; + } + + .banner-body .banner-text { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .banner-body button { + background-color: $adjustBlue; + color: white; + border: none; + border-radius: 2px; + padding: 8px 10px; + display: inline-block; + vertical-align: middle; + text-transform: uppercase; + text-align: center; + font-size: .9em; + letter-spacing: .02em; + cursor: pointer; + } +} diff --git a/src/sdk/smart-banner/template.html b/src/sdk/smart-banner/template.html new file mode 100644 index 0000000..1d62b3b --- /dev/null +++ b/src/sdk/smart-banner/template.html @@ -0,0 +1,8 @@ + diff --git a/src/sdk/smart-banner/typings.d.ts b/src/sdk/smart-banner/typings.d.ts new file mode 100644 index 0000000..448f7d1 --- /dev/null +++ b/src/sdk/smart-banner/typings.d.ts @@ -0,0 +1,4 @@ +declare module '*.html' { + const content: string; + export default content; +} diff --git a/src/sdk/snippet.js b/src/sdk/snippet.js index bf4f9b9..3b242f5 100644 --- a/src/sdk/snippet.js +++ b/src/sdk/snippet.js @@ -42,7 +42,10 @@ 'stop', 'restart', 'gdprForgetMe', - 'disableThirdPartySharing' + 'disableThirdPartySharing', + 'initSmartBanner', + 'showSmartBanner', + 'hideSmartBanner' ], function (context, queue, methodName) { context[methodName] = function () { diff --git a/webpack.demo.config.js b/webpack.demo.config.js index d138cd5..0af5607 100644 --- a/webpack.demo.config.js +++ b/webpack.demo.config.js @@ -4,7 +4,7 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin') const TerserPlugin = require('terser-webpack-plugin') const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') const FlowWebpackPlugin = require('flow-webpack-plugin') -const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); +const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') const webpack = require('webpack') const packageJson = require('./package.json') const namespace = 'adjust-sdk' diff --git a/webpack.sdk.config.js b/webpack.sdk.config.js index 84e8037..df664ff 100644 --- a/webpack.sdk.config.js +++ b/webpack.sdk.config.js @@ -2,6 +2,8 @@ const path = require('path') const webpack = require('webpack') const TerserPlugin = require('terser-webpack-plugin') const FlowWebpackPlugin = require('flow-webpack-plugin') +const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') +const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') const packageJson = require('./package.json') const namespace = 'adjust-sdk' const version = packageJson.version @@ -23,6 +25,9 @@ module.exports = () => ({ minimize: true, minimizer: [new TerserPlugin({ include: /\.min\.js$/ + }), + new OptimizeCSSAssetsPlugin({ + include: /\.min\.js$/ })] }, plugins: [ @@ -30,7 +35,8 @@ module.exports = () => ({ __ADJUST__NAMESPACE: JSON.stringify(namespace), __ADJUST__SDK_VERSION: JSON.stringify(version) }), - new FlowWebpackPlugin() + new FlowWebpackPlugin(), + new ForkTsCheckerWebpackPlugin() ], resolve: { extensions: ['.ts', '.js', '.json'] @@ -45,6 +51,18 @@ module.exports = () => ({ use: 'babel-loader', test: /\.(js|ts)$/, exclude: /node_modules/ + }, { + test: /(\.css|\.scss)$/, + use: [ + { loader: 'css-loader' }, + { loader: 'sass-loader' } + ] + }, { + test: /\.html$/, + loader: 'html-loader', + options: { + minimize: true, + } }] } }) From d4fd7989c3cde5a5ccea8a294d31ef54a233f51e Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Tue, 29 Jun 2021 01:14:57 +0300 Subject: [PATCH 05/58] ts declarations fixed --- dist/adjust-latest.d.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dist/adjust-latest.d.ts b/dist/adjust-latest.d.ts index b16d54b..946f09a 100644 --- a/dist/adjust-latest.d.ts +++ b/dist/adjust-latest.d.ts @@ -301,7 +301,7 @@ interface SmartBannerOptions { * * This method gets Smart Banner data and creates Smart Banner UI. * - * @param {string} appWebToken Options to initiate the SDK instance. + * @param {SmartBannerOptions} options Options to initiate Smart Banner. * * @example * Adjust.initSmartBanner({ @@ -310,11 +310,10 @@ interface SmartBannerOptions { */ function initSmartBanner(options: SmartBannerOptions): void -/** - * Shows Smart Banner - */ +/** Show already existing hidden Smart Banner */ function showSmartBanner(): void +/** Hide already existing Smart Banner */ function hideSmartBanner(): void const Adjust = { From 705805d3f62f48b34f31d2dcd50939ebf0eb3bc1 Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Tue, 29 Jun 2021 01:19:32 +0300 Subject: [PATCH 06/58] unused webpack plugin removed --- webpack.sdk.config.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/webpack.sdk.config.js b/webpack.sdk.config.js index df664ff..f465675 100644 --- a/webpack.sdk.config.js +++ b/webpack.sdk.config.js @@ -2,7 +2,6 @@ const path = require('path') const webpack = require('webpack') const TerserPlugin = require('terser-webpack-plugin') const FlowWebpackPlugin = require('flow-webpack-plugin') -const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') const packageJson = require('./package.json') const namespace = 'adjust-sdk' @@ -25,9 +24,6 @@ module.exports = () => ({ minimize: true, minimizer: [new TerserPlugin({ include: /\.min\.js$/ - }), - new OptimizeCSSAssetsPlugin({ - include: /\.min\.js$/ })] }, plugins: [ From 3510adc226dd9b1f3cd2d1c681fef84734872ba7 Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Tue, 29 Jun 2021 03:02:32 +0300 Subject: [PATCH 07/58] moved html and scss to assets subfolder --- src/sdk/smart-banner/{ => assets}/styles.scss | 2 +- src/sdk/smart-banner/{ => assets}/template.html | 0 src/sdk/smart-banner/smart-banner.ts | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename src/sdk/smart-banner/{ => assets}/styles.scss (93%) rename src/sdk/smart-banner/{ => assets}/template.html (100%) diff --git a/src/sdk/smart-banner/styles.scss b/src/sdk/smart-banner/assets/styles.scss similarity index 93% rename from src/sdk/smart-banner/styles.scss rename to src/sdk/smart-banner/assets/styles.scss index f01fb5e..adfea1c 100644 --- a/src/sdk/smart-banner/styles.scss +++ b/src/sdk/smart-banner/assets/styles.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/flex-grid"; +@import "../../../assets/scss/flex-grid"; $adjustBlue: #00bed5; diff --git a/src/sdk/smart-banner/template.html b/src/sdk/smart-banner/assets/template.html similarity index 100% rename from src/sdk/smart-banner/template.html rename to src/sdk/smart-banner/assets/template.html diff --git a/src/sdk/smart-banner/smart-banner.ts b/src/sdk/smart-banner/smart-banner.ts index 030939b..60b24b7 100644 --- a/src/sdk/smart-banner/smart-banner.ts +++ b/src/sdk/smart-banner/smart-banner.ts @@ -1,6 +1,6 @@ import Log from './../logger' -import template from './template.html' -import './styles.scss' +import template from './assets/template.html' +import './assets/styles.scss' /** * Adjust Web SDK Smart Banner From 7bee20ce5c373871f5bed272a64a1be476ff2807 Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Tue, 29 Jun 2021 03:02:45 +0300 Subject: [PATCH 08/58] jest config fixed --- dist/adjust-latest.js | 4 ++-- jest.config.js | 6 +++++- package-lock.json | 19 +++++++++++++++++++ package.json | 1 + src/sdk/__mocks__/style.js | 1 + 5 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 src/sdk/__mocks__/style.js diff --git a/dist/adjust-latest.js b/dist/adjust-latest.js index bc01b6e..74a4fda 100644 --- a/dist/adjust-latest.js +++ b/dist/adjust-latest.js @@ -10207,11 +10207,11 @@ function sdkClick() }); } } -// EXTERNAL MODULE: ./src/sdk/smart-banner/template.html +// EXTERNAL MODULE: ./src/sdk/smart-banner/assets/template.html var template = __webpack_require__(11); var template_default = /*#__PURE__*/__webpack_require__.n(template); -// EXTERNAL MODULE: ./src/sdk/smart-banner/styles.scss +// EXTERNAL MODULE: ./src/sdk/smart-banner/assets/styles.scss var styles = __webpack_require__(21); // CONCATENATED MODULE: ./src/sdk/smart-banner/smart-banner.ts diff --git a/jest.config.js b/jest.config.js index aa1c22e..2732961 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,7 +3,8 @@ module.exports = { '/src/sdk/**/?(*.)(spec|test).{js,ts}' ], transform: { - '^.+\\.(js|ts)$': 'babel-jest' + '^.+\\.(js|ts)$': 'babel-jest', + "^.+\\.html?$": "html-loader-jest", }, coveragePathIgnorePatterns: [ '/node_modules/', @@ -19,6 +20,9 @@ module.exports = { setupFilesAfterEnv: [ '/src/sdk/__tests__/_matchers.js' ], + moduleNameMapper: { + "\.(css|scss)$": "/src/sdk/__mocks__/style.js" + }, globals: { __ADJUST__NAMESPACE: 'adjust-sdk', __ADJUST__SDK_VERSION: 'TEST' diff --git a/package-lock.json b/package-lock.json index f09185b..3c3b031 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "flow-webpack-plugin": "^1.2.0", "fork-ts-checker-webpack-plugin": "^6.1.0", "html-loader": "^0.5.5", + "html-loader-jest": "^0.2.1", "html-webpack-plugin": "^3.2.0", "jest": "^24.9.0", "jest-localstorage-mock": "^2.4.6", @@ -8985,6 +8986,15 @@ "object-assign": "^4.1.1" } }, + "node_modules/html-loader-jest": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/html-loader-jest/-/html-loader-jest-0.2.1.tgz", + "integrity": "sha512-Sq9eDpsr/8kI+kyiQAL8jawa+aGRphANCeIeoLyU05DEfHd9vCi4Zz8AXUQTbqnF0TRGfVn9qN69/ox378kyGg==", + "dev": true, + "dependencies": { + "html-loader": "^0.5.1" + } + }, "node_modules/html-minifier": { "version": "3.5.21", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", @@ -25094,6 +25104,15 @@ "object-assign": "^4.1.1" } }, + "html-loader-jest": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/html-loader-jest/-/html-loader-jest-0.2.1.tgz", + "integrity": "sha512-Sq9eDpsr/8kI+kyiQAL8jawa+aGRphANCeIeoLyU05DEfHd9vCi4Zz8AXUQTbqnF0TRGfVn9qN69/ox378kyGg==", + "dev": true, + "requires": { + "html-loader": "^0.5.1" + } + }, "html-minifier": { "version": "3.5.21", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", diff --git a/package.json b/package.json index f7a9ae4..b6c63ce 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "flow-webpack-plugin": "^1.2.0", "fork-ts-checker-webpack-plugin": "^6.1.0", "html-loader": "^0.5.5", + "html-loader-jest": "^0.2.1", "html-webpack-plugin": "^3.2.0", "jest": "^24.9.0", "jest-localstorage-mock": "^2.4.6", diff --git a/src/sdk/__mocks__/style.js b/src/sdk/__mocks__/style.js new file mode 100644 index 0000000..6699508 --- /dev/null +++ b/src/sdk/__mocks__/style.js @@ -0,0 +1 @@ +module.exports = {}; // This is a stub for css/scss modules to make Jest not try to transform them From 3766169f76f3ff8e2c96c142ea52e8775e7b0453 Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Tue, 29 Jun 2021 03:10:59 +0300 Subject: [PATCH 09/58] lint issues fixed --- src/sdk/__mocks__/style.js | 2 +- src/sdk/smart-banner/typings.d.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sdk/__mocks__/style.js b/src/sdk/__mocks__/style.js index 6699508..e14b1a4 100644 --- a/src/sdk/__mocks__/style.js +++ b/src/sdk/__mocks__/style.js @@ -1 +1 @@ -module.exports = {}; // This is a stub for css/scss modules to make Jest not try to transform them +module.exports = {} // This is a stub for css/scss modules to make Jest not try to transform them diff --git a/src/sdk/smart-banner/typings.d.ts b/src/sdk/smart-banner/typings.d.ts index 448f7d1..44aa36b 100644 --- a/src/sdk/smart-banner/typings.d.ts +++ b/src/sdk/smart-banner/typings.d.ts @@ -1,4 +1,4 @@ declare module '*.html' { - const content: string; - export default content; + const content: string + export default content } From 901ecc5c0c56fac640c3e19d6538efe992454b1b Mon Sep 17 00:00:00 2001 From: Yara Matkova Date: Thu, 1 Jul 2021 02:52:11 +0300 Subject: [PATCH 10/58] addressed review points --- dist/adjust-latest.js | 609 ++++++++- dist/adjust-latest.min.js | 4 +- package-lock.json | 1369 +++++++++++++-------- package.json | 1 + src/sdk/main.js | 9 +- src/sdk/smart-banner/assets/styles.scss | 28 +- src/sdk/smart-banner/assets/template.html | 8 - src/sdk/smart-banner/assets/template.ts | 11 + src/sdk/smart-banner/smart-banner.ts | 25 +- src/sdk/smart-banner/typings.d.ts | 6 +- src/sdk/types.js | 4 + webpack.demo.config.js | 40 +- webpack.sdk.config.js | 14 +- 13 files changed, 1554 insertions(+), 574 deletions(-) delete mode 100644 src/sdk/smart-banner/assets/template.html create mode 100644 src/sdk/smart-banner/assets/template.ts diff --git a/dist/adjust-latest.js b/dist/adjust-latest.js index 74a4fda..e921d0c 100644 --- a/dist/adjust-latest.js +++ b/dist/adjust-latest.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 23); +/******/ return __webpack_require__(__webpack_require__.s = 25); /******/ }) /************************************************************************/ /******/ ([ @@ -149,7 +149,7 @@ var arrayWithHoles = __webpack_require__(15); var iterableToArrayLimit = __webpack_require__(16); -var unsupportedIterableToArray = __webpack_require__(7); +var unsupportedIterableToArray = __webpack_require__(8); var nonIterableRest = __webpack_require__(17); @@ -1406,7 +1406,7 @@ var arrayWithoutHoles = __webpack_require__(18); var iterableToArray = __webpack_require__(19); -var unsupportedIterableToArray = __webpack_require__(7); +var unsupportedIterableToArray = __webpack_require__(8); var nonIterableSpread = __webpack_require__(20); @@ -1421,7 +1421,32 @@ module.exports["default"] = module.exports, module.exports.__esModule = true; /* 7 */ /***/ (function(module, exports, __webpack_require__) { -var arrayLikeToArray = __webpack_require__(8); + +var content = __webpack_require__(21); + +if(typeof content === 'string') content = [[module.i, content, '']]; + +var transform; +var insertInto; + + + +var options = {"hmr":true} + +options.transform = transform +options.insertInto = undefined; + +var update = __webpack_require__(23)(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayLikeToArray = __webpack_require__(9); function _unsupportedIterableToArray(o, minLen) { if (!o) return; @@ -1436,7 +1461,7 @@ module.exports = _unsupportedIterableToArray; module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 8 */ +/* 9 */ /***/ (function(module, exports) { function _arrayLikeToArray(arr, len) { @@ -1453,7 +1478,7 @@ module.exports = _arrayLikeToArray; module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 9 */ +/* 10 */ /***/ (function(module, exports, __webpack_require__) { var objectWithoutPropertiesLoose = __webpack_require__(12); @@ -1481,7 +1506,7 @@ module.exports = _objectWithoutProperties; module.exports["default"] = module.exports, module.exports.__esModule = true; /***/ }), -/* 10 */ +/* 11 */ /***/ (function(module, exports) { function _typeof(obj) { @@ -1507,12 +1532,6 @@ function _typeof(obj) { module.exports = _typeof; module.exports["default"] = module.exports, module.exports.__esModule = true; -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = "
"; - /***/ }), /* 12 */ /***/ (function(module, exports) { @@ -1814,7 +1833,7 @@ module.exports["default"] = module.exports, module.exports.__esModule = true; /* 18 */ /***/ (function(module, exports, __webpack_require__) { -var arrayLikeToArray = __webpack_require__(8); +var arrayLikeToArray = __webpack_require__(9); function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return arrayLikeToArray(arr); @@ -1854,10 +1873,15 @@ exports = module.exports = __webpack_require__(22)(false); // module -exports.push([module.i, ".flex-box-column{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-moz-box-direction:normal;box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical}.flex-box-row{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-direction:normal;-moz-box-direction:normal;box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;box-orient:horizontal}.flex-auto{-webkit-box-flex:0 0 auto;-moz-box-flex:0 0 auto;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.flex-one{-webkit-box-flex:1 1 0%;-moz-box-flex:1 1 0%;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-height:0;min-width:0}.flex-two{-webkit-box-flex:2;-moz-box-flex:2;-webkit-flex:2;-ms-flex:2;flex:2}.banner{width:100vw;position:fixed;left:0;bottom:0;background-color:white}.banner .banner-body{align-items:center;margin:2px 8px}.banner .banner-body .banner-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.banner .banner-body button{background-color:#00bed5;color:white;border:none;border-radius:2px;padding:8px 10px;display:inline-block;vertical-align:middle;text-transform:uppercase;text-align:center;font-size:.9em;letter-spacing:.02em;cursor:pointer}\n", ""]); +exports.push([module.i, "._2B_H10JaUsseaRYJpdVevS{width:100vw;position:fixed;left:0;bottom:0;background-color:white}._2B_H10JaUsseaRYJpdVevS ._2zUCl61n-bfB688MeKKyha{display:flex;flex-direction:row;box-direction:normal;box-orient:horizontal;align-items:center;margin:2px 8px}._2B_H10JaUsseaRYJpdVevS ._2zUCl61n-bfB688MeKKyha ._2JrIBTXictB5lqTjEZFNNz{flex:1 1 0%;min-height:0;min-width:0}._2B_H10JaUsseaRYJpdVevS ._2zUCl61n-bfB688MeKKyha ._3_No8Y1Gy_qOtsUkoxWVmv{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._2B_H10JaUsseaRYJpdVevS ._2zUCl61n-bfB688MeKKyha h4{margin:0;font-size:1em}._2B_H10JaUsseaRYJpdVevS ._2zUCl61n-bfB688MeKKyha p{margin:0;font-size:.9em}._2B_H10JaUsseaRYJpdVevS ._2zUCl61n-bfB688MeKKyha button{background-color:#00bed5;color:white;border:none;border-radius:2px;padding:8px 10px;display:inline-block;vertical-align:middle;text-transform:uppercase;text-align:center;font-size:.9em;letter-spacing:.02em;cursor:pointer}\n", ""]); // exports - +exports.locals = { + "banner": "_2B_H10JaUsseaRYJpdVevS", + "bannerBody": "_2zUCl61n-bfB688MeKKyha", + "textContainer": "_2JrIBTXictB5lqTjEZFNNz", + "bannerText": "_3_No8Y1Gy_qOtsUkoxWVmv" +}; /***/ }), /* 22 */ @@ -1943,6 +1967,505 @@ function toComment(sourceMap) { /***/ }), /* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var stylesInDom = {}; + +var memoize = function (fn) { + var memo; + + return function () { + if (typeof memo === "undefined") memo = fn.apply(this, arguments); + return memo; + }; +}; + +var isOldIE = memoize(function () { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + return window && document && document.all && !window.atob; +}); + +var getTarget = function (target, parent) { + if (parent){ + return parent.querySelector(target); + } + return document.querySelector(target); +}; + +var getElement = (function (fn) { + var memo = {}; + + return function(target, parent) { + // If passing function in options, then use it for resolve "head" element. + // Useful for Shadow Root style i.e + // { + // insertInto: function () { return document.querySelector("#foo").shadowRoot } + // } + if (typeof target === 'function') { + return target(); + } + if (typeof memo[target] === "undefined") { + var styleTarget = getTarget.call(this, target, parent); + // Special case to return head of iframe instead of iframe itself + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch(e) { + styleTarget = null; + } + } + memo[target] = styleTarget; + } + return memo[target] + }; +})(); + +var singleton = null; +var singletonCounter = 0; +var stylesInsertedAtTop = []; + +var fixUrls = __webpack_require__(24); + +module.exports = function(list, options) { + if (typeof DEBUG !== "undefined" && DEBUG) { + if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); + } + + options = options || {}; + + options.attrs = typeof options.attrs === "object" ? options.attrs : {}; + + // Force single-tag solution on IE6-9, which has a hard limit on the # of