From dd67abe333d3824f8fb6cf6290ebce932d26b2e3 Mon Sep 17 00:00:00 2001 From: wada Date: Thu, 19 May 2022 14:23:41 +0900 Subject: [PATCH] Update to Cubism 4 SDK for Web R5 beta1 --- .eslintrc.yml | 39 +- CHANGELOG.md | 15 + README.md | 13 +- package-lock.json | 2713 ++++++++++++++++++------ package.json | 16 +- src/cubismdefaultparameterid.ts | 2 +- src/cubismmodelsettingjson.ts | 40 +- src/effect/cubismeyeblink.ts | 2 +- src/effect/cubismpose.ts | 12 +- src/id/cubismidmanager.ts | 7 +- src/live2dcubismframework.ts | 6 +- src/math/cubismmatrix44.ts | 36 +- src/math/cubismviewmatrix.ts | 8 +- src/model/cubismmoc.ts | 5 +- src/model/cubismmodel.ts | 273 ++- src/motion/cubismexpressionmotion.ts | 2 +- src/motion/cubismmotion.ts | 193 +- src/motion/cubismmotioninternal.ts | 7 +- src/motion/cubismmotionjson.ts | 2 +- src/motion/cubismmotionmanager.ts | 2 +- src/motion/cubismmotionqueuemanager.ts | 3 +- src/physics/cubismphysics.ts | 133 +- src/physics/cubismphysicsinternal.ts | 7 +- src/rendering/cubismrenderer.ts | 14 +- src/rendering/cubismrenderer_webgl.ts | 759 ++++--- src/utils/cubismdebug.ts | 2 +- src/utils/cubismjson.ts | 2 +- 27 files changed, 3049 insertions(+), 1264 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 9d17f9a..2e4c866 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -4,7 +4,6 @@ extends: - plugin:@typescript-eslint/recommended - plugin:@typescript-eslint/recommended-requiring-type-checking - plugin:prettier/recommended - - prettier/@typescript-eslint plugins: - '@typescript-eslint' parser: '@typescript-eslint/parser' @@ -16,7 +15,35 @@ rules: prettier/prettier: - error - singleQuote: true - '@typescript-eslint/camelcase': warn + camelcase: "off" + '@typescript-eslint/naming-convention': + - warn + - selector: default + format: + - camelCase + - selector: variable + format: + - camelCase + - UPPER_CASE + leadingUnderscore: allow + trailingUnderscore: allow + - selector: class + format: + - PascalCase + trailingUnderscore: allow + - selector: parameter + format: + - camelCase + leadingUnderscore: allow + - selector: memberLike + modifiers: + - private + format: + - camelCase + leadingUnderscore: require + - selector: typeLike + format: + - PascalCase '@typescript-eslint/no-use-before-define': off no-empty-function: off '@typescript-eslint/no-empty-function': @@ -25,6 +52,12 @@ rules: - constructors 'no-fallthrough': warn '@typescript-eslint/unbound-method': off + '@typescript-eslint/no-unsafe-assignment': off + '@typescript-eslint/restrict-plus-operands': off + '@typescript-eslint/no-unsafe-return': off + '@typescript-eslint/no-unsafe-member-access': off + '@typescript-eslint/no-unsafe-argument': off + '@typescript-eslint/no-unsafe-call': off 'no-inner-declarations': off - '@typescript-eslint/class-name-casing': warn + 'no-global-assign': off 'prefer-const': warn diff --git a/CHANGELOG.md b/CHANGELOG.md index be8d704..3a9a433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [4-r.5-beta.1] - 2022-05-19 + +### Added + +* Add processing related to multiply colors and screen colors added in Cubism 4.2. + +### Fixed + +* Fix usage of Anisotropy filtering. +* Fix model was not displayed when the number of masks exceeded the limit. +* Fix getTextureDirectory() to return the directory name of the 0th texture path. + + ## [4-r.4] - 2021-12-09 ### Fixed @@ -66,6 +80,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). * Reformat code using Prettier and ESLint. +[4-r.5-beta.1]: https://github.com/Live2D/CubismWebFramework/compare/4-r.4...4-r.5-beta.1 [4-r.4]: https://github.com/Live2D/CubismWebFramework/compare/4-r.3...4-r.4 [4-r.3]: https://github.com/Live2D/CubismWebFramework/compare/4-r.3-beta.1...4-r.3 [4-r.3-beta.1]: https://github.com/Live2D/CubismWebFramework/compare/4-r.2...4-r.3-beta.1 diff --git a/README.md b/README.md index 5e1d4c4..6ab0bdb 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,15 @@ Live2D Cubism 4 Editor で出力したモデルをアプリケーションで利 ### Node.js -* 17.2.0 -* 16.13.1 -* 14.18.2 -* 12.22.7 +* 18.1.0 +* 17.9.0 +* 16.15.0 +* 14.19.2 + ### TypeScript -4.5.2 +4.6.4 ## 開発環境構築 @@ -140,4 +141,4 @@ JSONパーサーやログ出力などのユーティリティ機能を提供し ユーザー同士でCubism SDKの活用方法の提案や質問をしたい場合は、是非コミュニティをご活用ください。 - [Live2D 公式コミュニティ](https://creatorsforum.live2d.com/) -- [Live2D community(English)](http://community.live2d.com/) +- [Live2D community(English)](https://community.live2d.com/) diff --git a/package-lock.json b/package-lock.json index fc24da4..f1b2f47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,151 +1,1749 @@ { + "name": "Framework", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" + "packages": { + "": { + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^5.23.0", + "@typescript-eslint/parser": "^5.23.0", + "eslint": "^8.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.0.0", + "prettier": "^2.6.2", + "rimraf": "^3.0.2", + "typescript": "^4.6.4" } }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "node_modules/@eslint/eslintrc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", + "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/type-utils": "5.23.0", + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", + "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", + "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/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/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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.3", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/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/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "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" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.18.0.tgz", - "integrity": "sha512-kuO8WQjV+RCZvAXVRJfXWiJ8iYEtfHlKgcqqqXg9uUkIolEHuUaMmm8/lcO4xwCOtaw6mY0gStn2Lg4/eUXXYQ==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", + "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.18.0", - "eslint-utils": "^1.4.3", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/type-utils": "5.23.0", + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.18.0.tgz", - "integrity": "sha512-J6MopKPHuJYmQUkANLip7g9I82ZLe1naCbxZZW3O2sIxTiq/9YYoOELEKY7oPg0hJ0V/AQ225h2z0Yp+RRMXhw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.18.0", - "eslint-scope": "^5.0.0" + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.18.0.tgz", - "integrity": "sha512-SJJPxFMEYEWkM6pGfcnjLU+NJIPo+Ko1QrCBL+i0+zV30ggLD90huEmMMhKLHBpESWy9lVEeWlQibweNQzyc+A==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", + "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.18.0", - "@typescript-eslint/typescript-estree": "2.18.0", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "debug": "^4.3.2" } }, - "@typescript-eslint/typescript-estree": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.18.0.tgz", - "integrity": "sha512-gVHylf7FDb8VSi2ypFuEL3hOtoC4HkZZ5dOjXvVjoyKdRrvXAOPSzpNRnKMfaUUEiSLP8UF9j9X9EDLxC0lfZg==", + "@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", "dev": true, "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", + "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" } }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", - "dev": true + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "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": "^1.9.0" + "color-convert": "^2.0.1" } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, "balanced-match": { @@ -164,6 +1762,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -171,50 +1778,28 @@ "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "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 }, "concat-map": { @@ -224,41 +1809,40 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -268,147 +1852,165 @@ "esutils": "^2.0.2" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^1.2.3", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "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", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } + "requires": {} }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "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": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "estraverse": { @@ -423,21 +2025,10 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-diff": { @@ -446,6 +2037,30 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "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, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -458,50 +2073,47 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "reusify": "^1.0.4" } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "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": "^2.0.1" + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "fs.realpath": { @@ -516,12 +2128,6 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -537,42 +2143,47 @@ } }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-fresh": { @@ -607,52 +2218,25 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "inquirer": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz", - "integrity": "sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "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 }, "isexe": { @@ -661,20 +2245,13 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "json-schema-traverse": { @@ -690,75 +2267,67 @@ "dev": true }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "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 }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, "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 }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -768,35 +2337,20 @@ "wrappy": "1" } }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -813,21 +2367,33 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true }, "prettier-linter-helpers": { @@ -839,22 +2405,22 @@ "fast-diff": "^1.1.2" } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "resolve-from": { @@ -863,190 +2429,82 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true }, "rimraf": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", - "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "is-promise": "^2.1.0" + "queue-microtask": "^1.2.2" } }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "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 - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "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==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": "^3.0.0" - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "has-flag": "^4.0.0" } }, "text-table": { @@ -1055,61 +2513,55 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "is-number": "^7.0.0" } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "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" } }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, "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 }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -1122,9 +2574,9 @@ "dev": true }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -1142,14 +2594,11 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } } diff --git a/package.json b/package.json index 0625a00..66493a6 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,13 @@ "clean": "rimraf dist" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^2.18.0", - "@typescript-eslint/parser": "^2.18.0", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.0", - "eslint-plugin-prettier": "^3.1.2", - "prettier": "^1.19.1", - "rimraf": "^3.0.1", - "typescript": "^3.7.5" + "@typescript-eslint/eslint-plugin": "^5.23.0", + "@typescript-eslint/parser": "^5.23.0", + "eslint": "^8.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.0.0", + "prettier": "^2.6.2", + "rimraf": "^3.0.2", + "typescript": "^4.6.4" } } diff --git a/src/cubismdefaultparameterid.ts b/src/cubismdefaultparameterid.ts index 1d716d5..205e104 100644 --- a/src/cubismdefaultparameterid.ts +++ b/src/cubismdefaultparameterid.ts @@ -60,7 +60,7 @@ export const CubismDefaultParameterId = Object.freeze>({ ParamBustY: 'ParamBustY', ParamBaseX: 'ParamBaseX', ParamBaseY: 'ParamBaseY', - ParamNONE: 'NONE:' + ParamNONE: 'NONE:', }); // Namespace definition for compatibility. diff --git a/src/cubismmodelsettingjson.ts b/src/cubismmodelsettingjson.ts index 5e635c6..a8f4c75 100644 --- a/src/cubismmodelsettingjson.ts +++ b/src/cubismmodelsettingjson.ts @@ -73,7 +73,7 @@ enum FrequestNode { FrequestNode_Textures, // getRoot().getValueByString(FileReferences).getValueByString(Textures) FrequestNode_Physics, // getRoot().getValueByString(FileReferences).getValueByString(Physics) FrequestNode_Pose, // getRoot().getValueByString(FileReferences).getValueByString(Pose) - FrequestNode_HitAreas // getRoot().getValueByString(HitAreas) + FrequestNode_HitAreas, // getRoot().getValueByString(HitAreas) } /** @@ -183,9 +183,25 @@ export class CubismModelSettingJson extends ICubismModelSetting { * @return テクスチャが配置されたディレクトリの名前 */ public getTextureDirectory(): string { - return this._jsonValue + const texturePath = this._jsonValue .at(FrequestNode.FrequestNode_Textures) + .getValueByIndex(0) .getRawString(); + + const pathArray = texturePath.split('/'); + // 最後の要素はテクスチャ名なので不要 + const arrayLength = pathArray.length - 1; + let textureDirectoryStr = ''; + + // 分割したパスを結合 + for (let i = 0; i < arrayLength; i++) { + textureDirectoryStr += pathArray[i]; + if (i < arrayLength - 1) { + textureDirectoryStr += '/'; + } + } + + return textureDirectoryStr; } /** @@ -496,10 +512,7 @@ export class CubismModelSettingJson extends ICubismModelSetting { } if (refI.getValueByString(Name).getRawString() == EyeBlink) { - num = refI - .getValueByString(Ids) - .getVector() - .getSize(); + num = refI.getValueByString(Ids).getVector().getSize(); break; } } @@ -531,10 +544,7 @@ export class CubismModelSettingJson extends ICubismModelSetting { if (refI.getValueByString(Name).getRawString() == EyeBlink) { return CubismFramework.getIdManager().getId( - refI - .getValueByString(Ids) - .getValueByIndex(index) - .getRawString() + refI.getValueByString(Ids).getValueByIndex(index).getRawString() ); } } @@ -564,10 +574,7 @@ export class CubismModelSettingJson extends ICubismModelSetting { } if (refI.getValueByString(Name).getRawString() == LipSync) { - num = refI - .getValueByString(Ids) - .getVector() - .getSize(); + num = refI.getValueByString(Ids).getVector().getSize(); break; } } @@ -599,10 +606,7 @@ export class CubismModelSettingJson extends ICubismModelSetting { if (refI.getValueByString(Name).getRawString() == LipSync) { return CubismFramework.getIdManager().getId( - refI - .getValueByString(Ids) - .getValueByIndex(index) - .getRawString() + refI.getValueByString(Ids).getValueByIndex(index).getRawString() ); } } diff --git a/src/effect/cubismeyeblink.ts b/src/effect/cubismeyeblink.ts index efb969f..f97e87d 100644 --- a/src/effect/cubismeyeblink.ts +++ b/src/effect/cubismeyeblink.ts @@ -219,7 +219,7 @@ export enum EyeState { EyeState_Interval, // まばたきしていない状態 EyeState_Closing, // まぶたが閉じていく途中の状態 EyeState_Closed, // まぶたが閉じている状態 - EyeState_Opening // まぶたが開いていく途中の状態 + EyeState_Opening, // まぶたが開いていく途中の状態 } // Namespace definition for compatibility. diff --git a/src/effect/cubismpose.ts b/src/effect/cubismpose.ts index ceaedee..1b70361 100644 --- a/src/effect/cubismpose.ts +++ b/src/effect/cubismpose.ts @@ -60,9 +60,10 @@ export class CubismPose { for (let groupIndex = 0; groupIndex < idCount; ++groupIndex) { const partInfo: Value = idListInfo.getValueByIndex(groupIndex); const partData: PartData = new PartData(); - const parameterId: CubismIdHandle = CubismFramework.getIdManager().getId( - partInfo.getValueByString(Id).getRawString() - ); + const parameterId: CubismIdHandle = + CubismFramework.getIdManager().getId( + partInfo.getValueByString(Id).getRawString() + ); partData.partId = parameterId; @@ -163,10 +164,7 @@ export class CubismPose { model.setParameterValueByIndex(paramIndex, j == beginIndex ? 1.0 : 0.0); for (let k = 0; k < this._partGroups.at(j).link.getSize(); ++k) { - this._partGroups - .at(j) - .link.at(k) - .initialize(model); + this._partGroups.at(j).link.at(k).initialize(model); } } diff --git a/src/id/cubismidmanager.ts b/src/id/cubismidmanager.ts index 4f8ecde..74fc2fb 100644 --- a/src/id/cubismidmanager.ts +++ b/src/id/cubismidmanager.ts @@ -96,12 +96,7 @@ export class CubismIdManager { */ private findId(id: string): CubismId { for (let i = 0; i < this._ids.getSize(); ++i) { - if ( - this._ids - .at(i) - .getString() - .isEqual(id) - ) { + if (this._ids.at(i).getString().isEqual(id)) { return this._ids.at(i); } } diff --git a/src/live2dcubismframework.ts b/src/live2dcubismframework.ts index 17dcefb..e818b5b 100644 --- a/src/live2dcubismframework.ts +++ b/src/live2dcubismframework.ts @@ -10,7 +10,7 @@ import { CubismRenderer } from './rendering/cubismrenderer'; import { CSM_ASSERT, CubismLogInfo, - CubismLogWarning + CubismLogWarning, } from './utils/cubismdebug'; import { Value } from './utils/cubismjson'; @@ -56,7 +56,7 @@ let s_cubismIdManager: CubismIdManager = null; */ export const Constant = Object.freeze>({ vertexOffset: 0, // メッシュ頂点のオフセット値 - vertexStep: 2 // メッシュ頂点のステップ値 + vertexStep: 2, // メッシュ頂点のステップ値 }); export function csmDelete(address: T): void { @@ -263,7 +263,7 @@ export enum LogLevel { LogLevel_Info, // Infoログ LogLevel_Warning, // 警告ログ LogLevel_Error, // エラーログ - LogLevel_Off // ログ出力無効 + LogLevel_Off, // ログ出力無効 } // Namespace definition for compatibility. diff --git a/src/math/cubismmatrix44.ts b/src/math/cubismmatrix44.ts index eba595b..99091ac 100644 --- a/src/math/cubismmatrix44.ts +++ b/src/math/cubismmatrix44.ts @@ -32,22 +32,8 @@ export class CubismMatrix44 { dst: Float32Array ): void { const c: Float32Array = new Float32Array([ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 ]); const n = 4; @@ -70,22 +56,8 @@ export class CubismMatrix44 { */ public loadIdentity(): void { const c: Float32Array = new Float32Array([ + 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0 ]); this.setMatrix(c); @@ -203,7 +175,7 @@ export class CubismMatrix44 { x, y, 0.0, - 1.0 + 1.0, ]); CubismMatrix44.multiply(tr1, this._tr, this._tr); @@ -263,7 +235,7 @@ export class CubismMatrix44 { 0.0, 0.0, 0.0, - 1.0 + 1.0, ]); CubismMatrix44.multiply(tr1, this._tr, this._tr); diff --git a/src/math/cubismviewmatrix.ts b/src/math/cubismviewmatrix.ts index c81a05a..d2090e6 100644 --- a/src/math/cubismviewmatrix.ts +++ b/src/math/cubismviewmatrix.ts @@ -72,7 +72,7 @@ export class CubismViewMatrix extends CubismMatrix44 { x, y, 0.0, - 1.0 + 1.0, ]); CubismMatrix44.multiply(tr1, this._tr, this._tr); @@ -117,7 +117,7 @@ export class CubismViewMatrix extends CubismMatrix44 { cx, cy, 0.0, - 1.0 + 1.0, ]); const tr2: Float32Array = new Float32Array([ @@ -136,7 +136,7 @@ export class CubismViewMatrix extends CubismMatrix44 { 0.0, 0.0, 0.0, - 1.0 + 1.0, ]); const tr3: Float32Array = new Float32Array([ @@ -155,7 +155,7 @@ export class CubismViewMatrix extends CubismMatrix44 { -cx, -cy, 0.0, - 1.0 + 1.0, ]); CubismMatrix44.multiply(tr3, this._tr, this._tr); diff --git a/src/model/cubismmoc.ts b/src/model/cubismmoc.ts index 5e2acec..212dc80 100644 --- a/src/model/cubismmoc.ts +++ b/src/model/cubismmoc.ts @@ -19,9 +19,8 @@ export class CubismMoc { */ public static create(mocBytes: ArrayBuffer): CubismMoc { let cubismMoc: CubismMoc = null; - const moc: Live2DCubismCore.Moc = Live2DCubismCore.Moc.fromArrayBuffer( - mocBytes - ); + const moc: Live2DCubismCore.Moc = + Live2DCubismCore.Moc.fromArrayBuffer(mocBytes); if (moc) { cubismMoc = new CubismMoc(moc); diff --git a/src/model/cubismmodel.ts b/src/model/cubismmodel.ts index 5cfb14a..9db5b84 100644 --- a/src/model/cubismmodel.ts +++ b/src/model/cubismmodel.ts @@ -7,11 +7,23 @@ import { CubismIdHandle } from '../id/cubismid'; import { CubismFramework } from '../live2dcubismframework'; -import { CubismBlendMode } from '../rendering/cubismrenderer'; +import { + CubismBlendMode, + CubismTextureColor, +} from '../rendering/cubismrenderer'; import { csmMap } from '../type/csmmap'; import { csmVector } from '../type/csmvector'; import { CSM_ASSERT } from '../utils/cubismdebug'; +/** + * SDK側から与えられたDrawableの乗算色・スクリーン色上書きフラグと + * その色を保持する構造体 + */ +export class DrawableColorData { + isOverwritten = false; + Color: CubismTextureColor = new CubismTextureColor(); +} + /** * モデル * @@ -70,6 +82,190 @@ export class CubismModel { } } + /** + * 乗算色を取得する + * @param index Drawablesのインデックス + * @returns 指定したdrawableの乗算色(RGBA) + */ + public getMultiplyColor(index: number): CubismTextureColor { + // Drawableとモデル全体の乗算色上書きフラグがどちらもtrueな場合、モデル全体の上書きフラグが優先される + if ( + this.getOverwriteFlagForModelMultiplyColors() || + this.getOverwriteFlagForDrawableMultiplyColors(index) + ) { + return this._userMultiplyColors.at(index).Color; + } + + const color = this.getDrawableMultiplyColor(index); + return color; + } + + /** + * スクリーン色を取得する + * @param index Drawablesのインデックス + * @returns 指定したdrawableのスクリーン色(RGBA) + */ + public getScreenColor(index: number): CubismTextureColor { + // Drawableとモデル全体のスクリーン色上書きフラグがどちらもtrueな場合、モデル全体の上書きフラグが優先される + if ( + this.getOverwriteFlagForModelScreenColors() || + this.getOverwriteFlagForDrawableScreenColors(index) + ) { + return this._userScreenColors.at(index).Color; + } + + const color = this.getDrawableScreenColor(index); + return color; + } + + /** + * 乗算色をセットする + * @param index Drawablesのインデックス + * @param color 設定する乗算色(CubismTextureColor) + */ + public setMultiplyColorByTextureColor( + index: number, + color: CubismTextureColor + ) { + this.setMultiplyColorByRGBA(index, color.R, color.G, color.B, color.A); + } + + /** + * 乗算色をセットする + * @param index Drawablesのインデックス + * @param r 設定する乗算色のR値 + * @param g 設定する乗算色のG値 + * @param b 設定する乗算色のB値 + * @param a 設定する乗算色のA値 + */ + public setMultiplyColorByRGBA( + index: number, + r: number, + g: number, + b: number, + a = 1.0 + ) { + this._userMultiplyColors.at(index).Color.R = r; + this._userMultiplyColors.at(index).Color.G = g; + this._userMultiplyColors.at(index).Color.B = b; + this._userMultiplyColors.at(index).Color.A = a; + } + + /** + * スクリーン色をセットする + * @param index Drawablesのインデックス + * @param color 設定するスクリーン色(CubismTextureColor) + */ + public setScreenColorByTextureColor( + index: number, + color: CubismTextureColor + ) { + this.setScreenColorByRGBA(index, color.R, color.G, color.B, color.A); + } + + /** + * スクリーン色をセットする + * @param index Drawablesのインデックス + * @param r 設定するスクリーン色のR値 + * @param g 設定するスクリーン色のG値 + * @param b 設定するスクリーン色のB値 + * @param a 設定するスクリーン色のA値 + */ + public setScreenColorByRGBA( + index: number, + r: number, + g: number, + b: number, + a = 1.0 + ) { + this._userScreenColors.at(index).Color.R = r; + this._userScreenColors.at(index).Color.G = g; + this._userScreenColors.at(index).Color.B = b; + this._userScreenColors.at(index).Color.A = a; + } + + /** + * SDKから指定したモデルの乗算色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public getOverwriteFlagForModelMultiplyColors(): boolean { + return this._isOverwrittenModelMultiplyColors; + } + + /** + * SDKから指定したモデルのスクリーン色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public getOverwriteFlagForModelScreenColors(): boolean { + return this._isOverwrittenModelScreenColors; + } + + /** + * SDKから指定したモデルの乗算色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public setOverwriteFlagForModelMultiplyColors(value: boolean) { + this._isOverwrittenModelMultiplyColors = value; + } + + /** + * SDKから指定したモデルのスクリーン色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public setOverwriteFlagForModelScreenColors(value: boolean) { + this._isOverwrittenModelScreenColors = value; + } + + /** + * SDKから指定したDrawableIndexの乗算色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public getOverwriteFlagForDrawableMultiplyColors( + drawableindex: number + ): boolean { + return this._userMultiplyColors.at(drawableindex).isOverwritten; + } + + /** + * SDKから指定したDrawableIndexのスクリーン色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public getOverwriteFlagForDrawableScreenColors( + drawableindex: number + ): boolean { + return this._userMultiplyColors.at(drawableindex).isOverwritten; + } + + /** + * SDKから指定したDrawableIndexの乗算色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public setOverwriteFlagForDrawableMultiplyColors( + drawableindex: number, + value: boolean + ) { + this._userMultiplyColors.at(drawableindex).isOverwritten = value; + } + + /** + * SDKから指定したDrawableIndexのスクリーン色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + public setOverwriteFlagForDrawableScreenColors( + drawableindex: number, + value: boolean + ) { + this._userScreenColors.at(drawableindex).isOverwritten = value; + } + /** * モデルを取得 */ @@ -546,6 +742,40 @@ export class CubismModel { return opacities[drawableIndex]; } + /** + * Drawableの乗算色の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの乗算色(RGBA) + * スクリーン色はRGBAで取得されるが、Aは必ず0 + */ + public getDrawableMultiplyColor(drawableIndex: number): CubismTextureColor { + const multiplyColors: Float32Array = this._model.drawables.multiplyColors; + const index = drawableIndex * 4; + const multiplyColor: CubismTextureColor = new CubismTextureColor(); + multiplyColor.R = multiplyColors[index]; + multiplyColor.G = multiplyColors[index + 1]; + multiplyColor.B = multiplyColors[index + 2]; + multiplyColor.A = multiplyColors[index + 3]; + return multiplyColor; + } + + /** + * Drawableのスクリーン色の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのスクリーン色(RGBA) + * スクリーン色はRGBAで取得されるが、Aは必ず0 + */ + public getDrawableScreenColor(drawableIndex: number): CubismTextureColor { + const screenColors: Float32Array = this._model.drawables.screenColors; + const index = drawableIndex * 4; + const screenColor: CubismTextureColor = new CubismTextureColor(); + screenColor.R = screenColors[index]; + screenColor.G = screenColors[index + 1]; + screenColor.B = screenColors[index + 2]; + screenColor.A = screenColors[index + 3]; + return screenColor; + } + /** * Drawableのカリング情報の取得 * @param drawableIndex Drawableのインデックス @@ -695,6 +925,24 @@ export class CubismModel { ); } + /** + * Drawableの乗算色・スクリーン色の変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの乗算色・スクリーン色が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableの乗算色・スクリーン色が直近のCubismModel.update関数で変化した + * @return false Drawableの乗算色・スクリーン色が直近のCubismModel.update関数で変化してない + */ + public getDrawableDynamicFlagBlendColorDidChange( + drawableIndex: number + ): boolean { + const dynamicFlags: Uint8Array = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasBlendColorDidChangeBit( + dynamicFlags[drawableIndex] + ); + } + /** * 保存されたパラメータの読み込み */ @@ -750,11 +998,25 @@ export class CubismModel { const drawableIds: string[] = this._model.drawables.ids; const drawableCount: number = this._model.drawables.count; + this._userMultiplyColors = new csmVector(); + this._userMultiplyColors.updateSize( + drawableCount, + DrawableColorData, + true + ); + + this._userScreenColors = new csmVector(); + this._userScreenColors.updateSize(drawableCount, DrawableColorData, true); + this._drawableIds.prepareCapacity(drawableCount); for (let i = 0; i < drawableCount; ++i) { this._drawableIds.pushBack( CubismFramework.getIdManager().getId(drawableIds[i]) ); + + // shaderに影響しない色で初期化 + this.setMultiplyColorByRGBA(i, 1.0, 1.0, 1.0, 1.0); + this.setScreenColorByRGBA(i, 0.0, 0.0, 0.0, 1.0); } } } @@ -773,6 +1035,10 @@ export class CubismModel { this._parameterIds = new csmVector(); this._drawableIds = new csmVector(); this._partIds = new csmVector(); + this._isOverwrittenModelMultiplyColors = false; + this._isOverwrittenModelScreenColors = false; + this._userMultiplyColors = null; + this._userScreenColors = null; this._notExistPartId = new csmMap(); this._notExistParameterId = new csmMap(); @@ -796,6 +1062,11 @@ export class CubismModel { private _savedParameters: csmVector; // 保存されたパラメータ + private _isOverwrittenModelMultiplyColors: boolean; // SDK上でモデル全体の乗算色を上書きするか判定するフラグ + private _isOverwrittenModelScreenColors: boolean; // SDK上でモデル全体のスクリーン色を上書きするか判定するフラグ + private _userMultiplyColors: csmVector; // Drawableごとに設定する乗算色と上書きフラグを管理するリスト + private _userScreenColors: csmVector; // Drawableごとに設定するスクリーン色と上書きフラグを管理するリスト + private _model: Live2DCubismCore.Model; // モデル private _parameterValues: Float32Array; // パラメータの値のリスト diff --git a/src/motion/cubismexpressionmotion.ts b/src/motion/cubismexpressionmotion.ts index 9ffa94e..9ca0678 100644 --- a/src/motion/cubismexpressionmotion.ts +++ b/src/motion/cubismexpressionmotion.ts @@ -174,7 +174,7 @@ export class CubismExpressionMotion extends ACubismMotion { export enum ExpressionBlendType { ExpressionBlendType_Add = 0, // 加算 ExpressionBlendType_Multiply = 1, // 乗算 - ExpressionBlendType_Overwrite = 2 // 上書き + ExpressionBlendType_Overwrite = 2, // 上書き } /** diff --git a/src/motion/cubismmotion.ts b/src/motion/cubismmotion.ts index e690c52..85a8d82 100644 --- a/src/motion/cubismmotion.ts +++ b/src/motion/cubismmotion.ts @@ -14,7 +14,7 @@ import { csmVector } from '../type/csmvector'; import { CSM_ASSERT, CubismLogDebug, - CubismLogWarning + CubismLogWarning, } from '../utils/cubismdebug'; import { ACubismMotion, FinishedMotionCallback } from './acubismmotion'; import { @@ -24,7 +24,7 @@ import { CubismMotionEvent, CubismMotionPoint, CubismMotionSegment, - CubismMotionSegmentType + CubismMotionSegmentType, } from './cubismmotioninternal'; import { CubismMotionJson, EvaluationOptionFlag } from './cubismmotionjson'; import { CubismMotionQueueEntry } from './cubismmotionqueueentry'; @@ -275,15 +275,13 @@ export class CubismMotion extends ACubismMotion { motionQueueEntry: CubismMotionQueueEntry ): void { if (this._modelCurveIdEyeBlink == null) { - this._modelCurveIdEyeBlink = CubismFramework.getIdManager().getId( - EffectNameEyeBlink - ); + this._modelCurveIdEyeBlink = + CubismFramework.getIdManager().getId(EffectNameEyeBlink); } if (this._modelCurveIdLipSync == null) { - this._modelCurveIdLipSync = CubismFramework.getIdManager().getId( - EffectNameLipSync - ); + this._modelCurveIdLipSync = + CubismFramework.getIdManager().getId(EffectNameLipSync); } let timeOffsetSeconds: number = @@ -381,9 +379,8 @@ export class CubismMotion extends ACubismMotion { continue; } - const sourceValue: number = model.getParameterValueByIndex( - parameterIndex - ); + const sourceValue: number = + model.getParameterValueByIndex(parameterIndex); // Evaluate curve and apply value. value = evaluateCurve(this._motionData, c, time); @@ -793,24 +790,20 @@ export class CubismMotion extends ACubismMotion { ); } - this._motionData.curves.at(curveCount).id = json.getMotionCurveId( - curveCount - ); + this._motionData.curves.at(curveCount).id = + json.getMotionCurveId(curveCount); - this._motionData.curves.at( - curveCount - ).baseSegmentIndex = totalSegmentCount; + this._motionData.curves.at(curveCount).baseSegmentIndex = + totalSegmentCount; - this._motionData.curves.at( - curveCount - ).fadeInTime = json.isExistMotionCurveFadeInTime(curveCount) - ? json.getMotionCurveFadeInTime(curveCount) - : -1.0; - this._motionData.curves.at( - curveCount - ).fadeOutTime = json.isExistMotionCurveFadeOutTime(curveCount) - ? json.getMotionCurveFadeOutTime(curveCount) - : -1.0; + this._motionData.curves.at(curveCount).fadeInTime = + json.isExistMotionCurveFadeInTime(curveCount) + ? json.getMotionCurveFadeInTime(curveCount) + : -1.0; + this._motionData.curves.at(curveCount).fadeOutTime = + json.isExistMotionCurveFadeOutTime(curveCount) + ? json.getMotionCurveFadeOutTime(curveCount) + : -1.0; // Segments for ( @@ -819,16 +812,13 @@ export class CubismMotion extends ACubismMotion { ) { if (segmentPosition == 0) { - this._motionData.segments.at( - totalSegmentCount - ).basePointIndex = totalPointCount; + this._motionData.segments.at(totalSegmentCount).basePointIndex = + totalPointCount; - this._motionData.points.at( - totalPointCount - ).time = json.getMotionCurveSegment(curveCount, segmentPosition); - this._motionData.points.at( - totalPointCount - ).value = json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); totalPointCount += 1; segmentPosition += 2; @@ -845,22 +835,13 @@ export class CubismMotion extends ACubismMotion { case CubismMotionSegmentType.CubismMotionSegmentType_Linear: { this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_Linear; - this._motionData.segments.at( - totalSegmentCount - ).evaluate = linearEvaluate; + this._motionData.segments.at(totalSegmentCount).evaluate = + linearEvaluate; - this._motionData.points.at( - totalPointCount - ).time = json.getMotionCurveSegment( - curveCount, - segmentPosition + 1 - ); - this._motionData.points.at( - totalPointCount - ).value = json.getMotionCurveSegment( - curveCount, - segmentPosition + 2 - ); + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); totalPointCount += 1; segmentPosition += 3; @@ -872,53 +853,27 @@ export class CubismMotion extends ACubismMotion { CubismMotionSegmentType.CubismMotionSegmentType_Bezier; if (areBeziersRestructed || UseOldBeziersCurveMotion) { - this._motionData.segments.at( - totalSegmentCount - ).evaluate = bezierEvaluate; + this._motionData.segments.at(totalSegmentCount).evaluate = + bezierEvaluate; } else { - this._motionData.segments.at( - totalSegmentCount - ).evaluate = bezierEvaluateCardanoInterpretation; + this._motionData.segments.at(totalSegmentCount).evaluate = + bezierEvaluateCardanoInterpretation; } - this._motionData.points.at( - totalPointCount - ).time = json.getMotionCurveSegment( - curveCount, - segmentPosition + 1 - ); - this._motionData.points.at( - totalPointCount - ).value = json.getMotionCurveSegment( - curveCount, - segmentPosition + 2 - ); + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); - this._motionData.points.at( - totalPointCount + 1 - ).time = json.getMotionCurveSegment( - curveCount, - segmentPosition + 3 - ); - this._motionData.points.at( - totalPointCount + 1 - ).value = json.getMotionCurveSegment( - curveCount, - segmentPosition + 4 - ); + this._motionData.points.at(totalPointCount + 1).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 3); + this._motionData.points.at(totalPointCount + 1).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 4); - this._motionData.points.at( - totalPointCount + 2 - ).time = json.getMotionCurveSegment( - curveCount, - segmentPosition + 5 - ); - this._motionData.points.at( - totalPointCount + 2 - ).value = json.getMotionCurveSegment( - curveCount, - segmentPosition + 6 - ); + this._motionData.points.at(totalPointCount + 2).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 5); + this._motionData.points.at(totalPointCount + 2).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 6); totalPointCount += 3; segmentPosition += 7; @@ -929,22 +884,13 @@ export class CubismMotion extends ACubismMotion { case CubismMotionSegmentType.CubismMotionSegmentType_Stepped: { this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_Stepped; - this._motionData.segments.at( - totalSegmentCount - ).evaluate = steppedEvaluate; + this._motionData.segments.at(totalSegmentCount).evaluate = + steppedEvaluate; - this._motionData.points.at( - totalPointCount - ).time = json.getMotionCurveSegment( - curveCount, - segmentPosition + 1 - ); - this._motionData.points.at( - totalPointCount - ).value = json.getMotionCurveSegment( - curveCount, - segmentPosition + 2 - ); + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); totalPointCount += 1; segmentPosition += 3; @@ -955,22 +901,13 @@ export class CubismMotion extends ACubismMotion { case CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped: { this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped; - this._motionData.segments.at( - totalSegmentCount - ).evaluate = inverseSteppedEvaluate; + this._motionData.segments.at(totalSegmentCount).evaluate = + inverseSteppedEvaluate; - this._motionData.points.at( - totalPointCount - ).time = json.getMotionCurveSegment( - curveCount, - segmentPosition + 1 - ); - this._motionData.points.at( - totalPointCount - ).value = json.getMotionCurveSegment( - curveCount, - segmentPosition + 2 - ); + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); totalPointCount += 1; segmentPosition += 3; @@ -993,12 +930,10 @@ export class CubismMotion extends ACubismMotion { userdatacount < json.getEventCount(); ++userdatacount ) { - this._motionData.events.at(userdatacount).fireTime = json.getEventTime( - userdatacount - ); - this._motionData.events.at(userdatacount).value = json.getEventValue( - userdatacount - ); + this._motionData.events.at(userdatacount).fireTime = + json.getEventTime(userdatacount); + this._motionData.events.at(userdatacount).value = + json.getEventValue(userdatacount); } json.release(); diff --git a/src/motion/cubismmotioninternal.ts b/src/motion/cubismmotioninternal.ts index 8b48faa..9b96b38 100644 --- a/src/motion/cubismmotioninternal.ts +++ b/src/motion/cubismmotioninternal.ts @@ -17,7 +17,7 @@ import { csmVector } from '../type/csmvector'; export enum CubismMotionCurveTarget { CubismMotionCurveTarget_Model, // モデルに対して CubismMotionCurveTarget_Parameter, // パラメータに対して - CubismMotionCurveTarget_PartOpacity // パーツの不透明度に対して + CubismMotionCurveTarget_PartOpacity, // パーツの不透明度に対して } /** @@ -29,7 +29,7 @@ export enum CubismMotionSegmentType { CubismMotionSegmentType_Linear = 0, // リニア CubismMotionSegmentType_Bezier = 1, // ベジェ曲線 CubismMotionSegmentType_Stepped = 2, // ステップ - CubismMotionSegmentType_InverseStepped = 3 // インバースステップ + CubismMotionSegmentType_InverseStepped = 3, // インバースステップ } /** @@ -152,5 +152,6 @@ export namespace Live2DCubismFramework { export type CubismMotionSegment = $.CubismMotionSegment; export const CubismMotionSegmentType = $.CubismMotionSegmentType; export type CubismMotionSegmentType = $.CubismMotionSegmentType; - export type csmMotionSegmentEvaluationFunction = $.csmMotionSegmentEvaluationFunction; + export type csmMotionSegmentEvaluationFunction = + $.csmMotionSegmentEvaluationFunction; } diff --git a/src/motion/cubismmotionjson.ts b/src/motion/cubismmotionjson.ts index eace15b..907001a 100644 --- a/src/motion/cubismmotionjson.ts +++ b/src/motion/cubismmotionjson.ts @@ -371,7 +371,7 @@ export class CubismMotionJson { * @brief ベジェカーブの解釈方法のフラグタイプ */ export enum EvaluationOptionFlag { - EvaluationOptionFlag_AreBeziersRistricted = 0 ///< ベジェハンドルの規制状態 + EvaluationOptionFlag_AreBeziersRistricted = 0, ///< ベジェハンドルの規制状態 } // Namespace definition for compatibility. diff --git a/src/motion/cubismmotionmanager.ts b/src/motion/cubismmotionmanager.ts index 9d1ea48..0290a3d 100644 --- a/src/motion/cubismmotionmanager.ts +++ b/src/motion/cubismmotionmanager.ts @@ -9,7 +9,7 @@ import { CubismModel } from '../model/cubismmodel'; import { ACubismMotion } from './acubismmotion'; import { CubismMotionQueueEntryHandle, - CubismMotionQueueManager + CubismMotionQueueManager, } from './cubismmotionqueuemanager'; /** diff --git a/src/motion/cubismmotionqueuemanager.ts b/src/motion/cubismmotionqueuemanager.ts index 2aa5565..c8eb99c 100644 --- a/src/motion/cubismmotionqueuemanager.ts +++ b/src/motion/cubismmotionqueuemanager.ts @@ -327,7 +327,8 @@ export interface CubismMotionEventFunction { * モーションの識別番号の定義 */ export declare type CubismMotionQueueEntryHandle = any; -export const InvalidMotionQueueEntryHandleValue: CubismMotionQueueEntryHandle = -1; +export const InvalidMotionQueueEntryHandleValue: CubismMotionQueueEntryHandle = + -1; // Namespace definition for compatibility. import * as $ from './cubismmotionqueuemanager'; diff --git a/src/physics/cubismphysics.ts b/src/physics/cubismphysics.ts index 9fe9a50..646a9b0 100644 --- a/src/physics/cubismphysics.ts +++ b/src/physics/cubismphysics.ts @@ -16,7 +16,7 @@ import { CubismPhysicsRig, CubismPhysicsSource, CubismPhysicsSubRig, - CubismPhysicsTargetType + CubismPhysicsTargetType, } from './cubismphysicsinternal'; import { CubismPhysicsJson } from './cubismphysicsjson'; @@ -294,31 +294,19 @@ export class CubismPhysics { particleIndex = 0; for (let i = 0; i < this._physicsRig.settings.getSize(); ++i) { - this._physicsRig.settings.at( - i - ).normalizationPosition.minimum = json.getNormalizationPositionMinimumValue( - i - ); - this._physicsRig.settings.at( - i - ).normalizationPosition.maximum = json.getNormalizationPositionMaximumValue( - i - ); - this._physicsRig.settings.at( - i - ).normalizationPosition.defalut = json.getNormalizationPositionDefaultValue( - i - ); + this._physicsRig.settings.at(i).normalizationPosition.minimum = + json.getNormalizationPositionMinimumValue(i); + this._physicsRig.settings.at(i).normalizationPosition.maximum = + json.getNormalizationPositionMaximumValue(i); + this._physicsRig.settings.at(i).normalizationPosition.defalut = + json.getNormalizationPositionDefaultValue(i); - this._physicsRig.settings.at( - i - ).normalizationAngle.minimum = json.getNormalizationAngleMinimumValue(i); - this._physicsRig.settings.at( - i - ).normalizationAngle.maximum = json.getNormalizationAngleMaximumValue(i); - this._physicsRig.settings.at( - i - ).normalizationAngle.defalut = json.getNormalizationAngleDefaultValue(i); + this._physicsRig.settings.at(i).normalizationAngle.minimum = + json.getNormalizationAngleMinimumValue(i); + this._physicsRig.settings.at(i).normalizationAngle.maximum = + json.getNormalizationAngleMaximumValue(i); + this._physicsRig.settings.at(i).normalizationAngle.defalut = + json.getNormalizationAngleDefaultValue(i); // Input this._physicsRig.settings.at(i).inputCount = json.getInputCount(i); @@ -330,9 +318,8 @@ export class CubismPhysics { i, j ); - this._physicsRig.inputs.at( - inputIndex + j - ).reflect = json.getInputReflect(i, j); + this._physicsRig.inputs.at(inputIndex + j).reflect = + json.getInputReflect(i, j); if (json.getInputType(i, j) == PhysicsTypeTagX) { this._physicsRig.inputs.at(inputIndex + j).type = @@ -356,9 +343,8 @@ export class CubismPhysics { this._physicsRig.inputs.at(inputIndex + j).source.targetType = CubismPhysicsTargetType.CubismPhysicsTargetType_Parameter; - this._physicsRig.inputs.at( - inputIndex + j - ).source.id = json.getInputSourceId(i, j); + this._physicsRig.inputs.at(inputIndex + j).source.id = + json.getInputSourceId(i, j); } inputIndex += this._physicsRig.settings.at(i).inputCount; @@ -367,57 +353,45 @@ export class CubismPhysics { this._physicsRig.settings.at(i).baseOutputIndex = outputIndex; for (let j = 0; j < this._physicsRig.settings.at(i).outputCount; ++j) { - this._physicsRig.outputs.at( - outputIndex + j - ).destinationParameterIndex = -1; - this._physicsRig.outputs.at( - outputIndex + j - ).vertexIndex = json.getOutputVertexIndex(i, j); - this._physicsRig.outputs.at( - outputIndex + j - ).angleScale = json.getOutputAngleScale(i, j); - this._physicsRig.outputs.at( - outputIndex + j - ).weight = json.getOutputWeight(i, j); + this._physicsRig.outputs.at(outputIndex + j).destinationParameterIndex = + -1; + this._physicsRig.outputs.at(outputIndex + j).vertexIndex = + json.getOutputVertexIndex(i, j); + this._physicsRig.outputs.at(outputIndex + j).angleScale = + json.getOutputAngleScale(i, j); + this._physicsRig.outputs.at(outputIndex + j).weight = + json.getOutputWeight(i, j); this._physicsRig.outputs.at(outputIndex + j).destination.targetType = CubismPhysicsTargetType.CubismPhysicsTargetType_Parameter; - this._physicsRig.outputs.at( - outputIndex + j - ).destination.id = json.getOutputDestinationId(i, j); + this._physicsRig.outputs.at(outputIndex + j).destination.id = + json.getOutputDestinationId(i, j); if (json.getOutputType(i, j) == PhysicsTypeTagX) { this._physicsRig.outputs.at(outputIndex + j).type = CubismPhysicsSource.CubismPhysicsSource_X; - this._physicsRig.outputs.at( - outputIndex + j - ).getValue = getOutputTranslationX; - this._physicsRig.outputs.at( - outputIndex + j - ).getScale = getOutputScaleTranslationX; + this._physicsRig.outputs.at(outputIndex + j).getValue = + getOutputTranslationX; + this._physicsRig.outputs.at(outputIndex + j).getScale = + getOutputScaleTranslationX; } else if (json.getOutputType(i, j) == PhysicsTypeTagY) { this._physicsRig.outputs.at(outputIndex + j).type = CubismPhysicsSource.CubismPhysicsSource_Y; - this._physicsRig.outputs.at( - outputIndex + j - ).getValue = getOutputTranslationY; - this._physicsRig.outputs.at( - outputIndex + j - ).getScale = getOutputScaleTranslationY; + this._physicsRig.outputs.at(outputIndex + j).getValue = + getOutputTranslationY; + this._physicsRig.outputs.at(outputIndex + j).getScale = + getOutputScaleTranslationY; } else if (json.getOutputType(i, j) == PhysicsTypeTagAngle) { this._physicsRig.outputs.at(outputIndex + j).type = CubismPhysicsSource.CubismPhysicsSource_Angle; - this._physicsRig.outputs.at( - outputIndex + j - ).getValue = getOutputAngle; - this._physicsRig.outputs.at( - outputIndex + j - ).getScale = getOutputScaleAngle; + this._physicsRig.outputs.at(outputIndex + j).getValue = + getOutputAngle; + this._physicsRig.outputs.at(outputIndex + j).getScale = + getOutputScaleAngle; } - this._physicsRig.outputs.at( - outputIndex + j - ).reflect = json.getOutputReflect(i, j); + this._physicsRig.outputs.at(outputIndex + j).reflect = + json.getOutputReflect(i, j); } outputIndex += this._physicsRig.settings.at(i).outputCount; @@ -426,21 +400,16 @@ export class CubismPhysics { this._physicsRig.settings.at(i).baseParticleIndex = particleIndex; for (let j = 0; j < this._physicsRig.settings.at(i).particleCount; ++j) { - this._physicsRig.particles.at( - particleIndex + j - ).mobility = json.getParticleMobility(i, j); - this._physicsRig.particles.at( - particleIndex + j - ).delay = json.getParticleDelay(i, j); - this._physicsRig.particles.at( - particleIndex + j - ).acceleration = json.getParticleAcceleration(i, j); - this._physicsRig.particles.at( - particleIndex + j - ).radius = json.getParticleRadius(i, j); - this._physicsRig.particles.at( - particleIndex + j - ).position = json.getParticlePosition(i, j); + this._physicsRig.particles.at(particleIndex + j).mobility = + json.getParticleMobility(i, j); + this._physicsRig.particles.at(particleIndex + j).delay = + json.getParticleDelay(i, j); + this._physicsRig.particles.at(particleIndex + j).acceleration = + json.getParticleAcceleration(i, j); + this._physicsRig.particles.at(particleIndex + j).radius = + json.getParticleRadius(i, j); + this._physicsRig.particles.at(particleIndex + j).position = + json.getParticlePosition(i, j); } particleIndex += this._physicsRig.settings.at(i).particleCount; diff --git a/src/physics/cubismphysicsinternal.ts b/src/physics/cubismphysicsinternal.ts index 8c73722..ad17206 100644 --- a/src/physics/cubismphysicsinternal.ts +++ b/src/physics/cubismphysicsinternal.ts @@ -13,7 +13,7 @@ import { csmVector } from '../type/csmvector'; * 物理演算の適用先の種類 */ export enum CubismPhysicsTargetType { - CubismPhysicsTargetType_Parameter // パラメータに対して適用 + CubismPhysicsTargetType_Parameter, // パラメータに対して適用 } /** @@ -22,7 +22,7 @@ export enum CubismPhysicsTargetType { export enum CubismPhysicsSource { CubismPhysicsSource_X, // X軸の位置から CubismPhysicsSource_Y, // Y軸の位置から - CubismPhysicsSource_Angle // 角度から + CubismPhysicsSource_Angle, // 角度から } /** @@ -243,7 +243,8 @@ export namespace Live2DCubismFramework { export type CubismPhysicsTargetType = $.CubismPhysicsTargetType; export const PhysicsJsonEffectiveForces = $.PhysicsJsonEffectiveForces; export type PhysicsJsonEffectiveForces = $.PhysicsJsonEffectiveForces; - export type normalizedPhysicsParameterValueGetter = $.normalizedPhysicsParameterValueGetter; + export type normalizedPhysicsParameterValueGetter = + $.normalizedPhysicsParameterValueGetter; export type physicsScaleGetter = $.physicsScaleGetter; export type physicsValueGetter = $.physicsValueGetter; } diff --git a/src/rendering/cubismrenderer.ts b/src/rendering/cubismrenderer.ts index c69aaad..93b4632 100644 --- a/src/rendering/cubismrenderer.ts +++ b/src/rendering/cubismrenderer.ts @@ -159,7 +159,7 @@ export abstract class CubismRenderer { * @param n パラメータの値 */ public setAnisotropy(n: number): void { - this._anisortopy = n; + this._anisotropy = n; } /** @@ -167,7 +167,7 @@ export abstract class CubismRenderer { * @return 異方性フィルタリングのパラメータ */ public getAnisotropy(): number { - return this._anisortopy; + return this._anisotropy; } /** @@ -184,7 +184,7 @@ export abstract class CubismRenderer { protected constructor() { this._isCulling = false; this._isPremultipliedAlpha = false; - this._anisortopy = 0.0; + this._anisotropy = 0.0; this._model = null; this._modelColor = new CubismTextureColor(); @@ -218,6 +218,8 @@ export abstract class CubismRenderer { indexArray: Uint16Array, vertexArray: Float32Array, uvArray: Float32Array, + multiplyColor: CubismTextureColor, + screenColor: CubismTextureColor, opacity: number, colorBlendMode: CubismBlendMode, invertedMask: boolean @@ -226,20 +228,20 @@ export abstract class CubismRenderer { /** * レンダラが保持する静的なリソースを開放する */ - public static staticRelease: Function; + public static staticRelease: any; protected _mvpMatrix4x4: CubismMatrix44; // Model-View-Projection 行列 protected _modelColor: CubismTextureColor; // モデル自体のカラー(RGBA) protected _isCulling: boolean; // カリングが有効ならtrue protected _isPremultipliedAlpha: boolean; // 乗算済みαならtrue - protected _anisortopy: any; // テクスチャの異方性フィルタリングのパラメータ + protected _anisotropy: any; // テクスチャの異方性フィルタリングのパラメータ protected _model: CubismModel; // レンダリング対象のモデル } export enum CubismBlendMode { CubismBlendMode_Normal = 0, // 通常 CubismBlendMode_Additive = 1, // 加算 - CubismBlendMode_Multiplicative = 2 // 乗算 + CubismBlendMode_Multiplicative = 2, // 乗算 } /** diff --git a/src/rendering/cubismrenderer_webgl.ts b/src/rendering/cubismrenderer_webgl.ts index 51290a1..294c3da 100644 --- a/src/rendering/cubismrenderer_webgl.ts +++ b/src/rendering/cubismrenderer_webgl.ts @@ -15,7 +15,7 @@ import { CubismLogError } from '../utils/cubismdebug'; import { CubismBlendMode, CubismRenderer, - CubismTextureColor + CubismTextureColor, } from './cubismrenderer'; const ColorChannelCount = 4; // 実験時に1チャンネルの場合は1、RGBだけの場合は3、アルファも含める場合は4 @@ -151,12 +151,10 @@ export class CubismClippingManager_WebGL { const drawableIndex: number = clippingContext._clippedDrawableIndexList[clippedDrawableIndex]; - const drawableVertexCount: number = model.getDrawableVertexCount( - drawableIndex - ); - const drawableVertexes: Float32Array = model.getDrawableVertices( - drawableIndex - ); + const drawableVertexCount: number = + model.getDrawableVertexCount(drawableIndex); + const drawableVertexes: Float32Array = + model.getDrawableVertices(drawableIndex); let minX: number = Number.MAX_VALUE; let minY: number = Number.MAX_VALUE; @@ -368,9 +366,8 @@ export class CubismClippingManager_WebGL { clipIndex++ ) { // 1つのクリッピングマスクに関して - const cc: CubismClippingContext = this._clippingContextListForMask.at( - clipIndex - ); + const cc: CubismClippingContext = + this._clippingContextListForMask.at(clipIndex); // このクリップを利用する描画オブジェクト群全体を囲む矩形を計算 this.calcClippedDrawTotalBounds(model, cc); @@ -418,9 +415,8 @@ export class CubismClippingManager_WebGL { clipIndex++ ) { // --- 実際に1つのマスクを描く --- - const clipContext: CubismClippingContext = this._clippingContextListForMask.at( - clipIndex - ); + const clipContext: CubismClippingContext = + this._clippingContextListForMask.at(clipIndex); const allClipedDrawRect: csmRect = clipContext._allClippedDrawRect; // このマスクを使う、すべての描画オブジェクトの論理座標上の囲み矩形 const layoutBoundsOnTex01: csmRect = clipContext._layoutBounds; // この中にマスクを収める @@ -512,6 +508,8 @@ export class CubismClippingManager_WebGL { model.getDrawableVertexIndices(clipDrawIndex), model.getDrawableVertices(clipDrawIndex), model.getDrawableVertexUvs(clipDrawIndex), + model.getMultiplyColor(clipDrawIndex), + model.getScreenColor(clipDrawIndex), model.getDrawableOpacity(clipDrawIndex), CubismBlendMode.CubismBlendMode_Normal, // クリッピングは通常描画を強制 false // マスク生成時はクリッピングの反転使用は全く関係がない @@ -546,9 +544,8 @@ export class CubismClippingManager_WebGL { ): CubismClippingContext { // 作成済みClippingContextと一致するか確認 for (let i = 0; i < this._clippingContextListForMask.getSize(); i++) { - const clippingContext: CubismClippingContext = this._clippingContextListForMask.at( - i - ); + const clippingContext: CubismClippingContext = + this._clippingContextListForMask.at(i); const count: number = clippingContext._clippingIdCount; // 個数が違う場合は別物 @@ -609,9 +606,8 @@ export class CubismClippingManager_WebGL { // 何もしない } else if (layoutCount == 1) { // 全てをそのまま使う - const clipContext: CubismClippingContext = this._clippingContextListForMask.at( - curClipIndex++ - ); + const clipContext: CubismClippingContext = + this._clippingContextListForMask.at(curClipIndex++); clipContext._layoutChannelNo = channelNo; clipContext._layoutBounds.x = 0.0; clipContext._layoutBounds.y = 0.0; @@ -674,7 +670,23 @@ export class CubismClippingManager_WebGL { cc._layoutBounds.height = 1.0 / 3.0; } } else { + // マスクの制限枚数を超えた場合の処理 CubismLogError('not supported mask count : {0}', layoutCount); + + // SetupShaderProgramでオーバーアクセスが発生するので仮で数値を入れる + // もちろん描画結果は正しいものではなくなる + for (let index = 0; index < layoutCount; index++) { + const cc: CubismClippingContext = this._clippingContextListForMask.at( + curClipIndex++ + ); + + cc._layoutChannelNo = 0; + + cc._layoutBounds.x = 0.0; + cc._layoutBounds.y = 0.0; + cc._layoutBounds.width = 1.0; + cc._layoutBounds.height = 1.0; + } } } } @@ -900,6 +912,8 @@ export class CubismShader_WebGL { opacity: number, colorBlendMode: CubismBlendMode, baseColor: CubismTextureColor, + multiplyColor: CubismTextureColor, + screenColor: CubismTextureColor, isPremultipliedAlpha: boolean, matrix4x4: CubismMatrix44, invertedMask: boolean @@ -967,8 +981,8 @@ export class CubismShader_WebGL { ); // チャンネル - const channelNo: number = renderer.getClippingContextBufferForMask() - ._layoutChannelNo; + const channelNo: number = + renderer.getClippingContextBufferForMask()._layoutChannelNo; const colorChannel: CubismTextureColor = renderer .getClippingContextBufferForMask() .getClippingManager() @@ -987,8 +1001,8 @@ export class CubismShader_WebGL { renderer.getClippingContextBufferForMask()._matrixForMask.getArray() ); - const rect: csmRect = renderer.getClippingContextBufferForMask() - ._layoutBounds; + const rect: csmRect = + renderer.getClippingContextBufferForMask()._layoutBounds; this.gl.uniform4f( shaderSet.uniformBaseColorLocation, @@ -998,6 +1012,22 @@ export class CubismShader_WebGL { rect.getBottom() * 2.0 - 1.0 ); + this.gl.uniform4f( + shaderSet.uniformMultiplyColorLocation, + multiplyColor.R, + multiplyColor.G, + multiplyColor.B, + multiplyColor.A + ); + + this.gl.uniform4f( + shaderSet.uniformScreenColorLocation, + screenColor.R, + screenColor.G, + screenColor.B, + screenColor.A + ); + SRC_COLOR = this.gl.ZERO; DST_COLOR = this.gl.ONE_MINUS_SRC_COLOR; SRC_ALPHA = this.gl.ZERO; @@ -1098,8 +1128,8 @@ export class CubismShader_WebGL { ); // 使用するカラーチャンネルを設定 - const channelNo: number = renderer.getClippingContextBufferForDraw() - ._layoutChannelNo; + const channelNo: number = + renderer.getClippingContextBufferForDraw()._layoutChannelNo; const colorChannel: CubismTextureColor = renderer .getClippingContextBufferForDraw() .getClippingManager() @@ -1132,6 +1162,22 @@ export class CubismShader_WebGL { baseColor.B, baseColor.A ); + + this.gl.uniform4f( + shaderSet.uniformMultiplyColorLocation, + multiplyColor.R, + multiplyColor.G, + multiplyColor.B, + multiplyColor.A + ); + + this.gl.uniform4f( + shaderSet.uniformScreenColorLocation, + screenColor.R, + screenColor.G, + screenColor.B, + screenColor.A + ); } // IBOを作成し、データを転送 @@ -1198,54 +1244,57 @@ export class CubismShader_WebGL { this._shaderSets.at(9).shaderProgram = this._shaderSets.at(3).shaderProgram; // SetupMask - this._shaderSets.at( - 0 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(0).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 0 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(0).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(0).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(0).shaderProgram, + 'a_position' + ); + this._shaderSets.at(0).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(0).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(0).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(0).shaderProgram, 's_texture0' ); - this._shaderSets.at( - 0 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(0).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 0 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(0).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 0 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(0).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(0).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(0).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(0).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(0).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(0).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(0).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(0).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(0).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(0).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(0).shaderProgram, + 'u_screenColor' + ); // 通常(PremultipliedAlpha) - this._shaderSets.at( - 1 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(1).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 1 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(1).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(1).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(1).shaderProgram, + 'a_position' + ); + this._shaderSets.at(1).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(1).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(1).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(1).shaderProgram, 's_texture0' @@ -1254,26 +1303,33 @@ export class CubismShader_WebGL { this._shaderSets.at(1).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 1 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(1).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(1).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(1).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(1).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(1).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(1).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(1).shaderProgram, + 'u_screenColor' + ); // 通常(クリッピング、PremultipliedAlpha) - this._shaderSets.at( - 2 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(2).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 2 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(2).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(2).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(2).shaderProgram, + 'a_position' + ); + this._shaderSets.at(2).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(2).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(2).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(2).shaderProgram, 's_texture0' @@ -1286,38 +1342,43 @@ export class CubismShader_WebGL { this._shaderSets.at(2).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 2 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(2).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 2 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(2).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 2 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(2).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(2).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(2).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(2).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(2).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(2).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(2).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(2).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(2).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(2).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(2).shaderProgram, + 'u_screenColor' + ); // 通常(クリッピング・反転, PremultipliedAlpha) - this._shaderSets.at( - 3 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(3).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 3 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(3).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(3).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(3).shaderProgram, + 'a_position' + ); + this._shaderSets.at(3).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(3).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(3).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(3).shaderProgram, 's_texture0' @@ -1330,38 +1391,43 @@ export class CubismShader_WebGL { this._shaderSets.at(3).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 3 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(3).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 3 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(3).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 3 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(3).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(3).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(3).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(3).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(3).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(3).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(3).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(3).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(3).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(3).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(3).shaderProgram, + 'u_screenColor' + ); // 加算(PremultipliedAlpha) - this._shaderSets.at( - 4 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(4).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 4 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(4).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(4).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(4).shaderProgram, + 'a_position' + ); + this._shaderSets.at(4).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(4).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(4).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(4).shaderProgram, 's_texture0' @@ -1370,26 +1436,33 @@ export class CubismShader_WebGL { this._shaderSets.at(4).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 4 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(4).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(4).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(4).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(4).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(4).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(4).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(4).shaderProgram, + 'u_screenColor' + ); // 加算(クリッピング、PremultipliedAlpha) - this._shaderSets.at( - 5 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(5).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 5 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(5).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(5).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(5).shaderProgram, + 'a_position' + ); + this._shaderSets.at(5).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(5).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(5).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(5).shaderProgram, 's_texture0' @@ -1402,38 +1475,43 @@ export class CubismShader_WebGL { this._shaderSets.at(5).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 5 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(5).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 5 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(5).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 5 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(5).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(5).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(5).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(5).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(5).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(5).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(5).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(5).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(5).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(5).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(5).shaderProgram, + 'u_screenColor' + ); // 加算(クリッピング・反転、PremultipliedAlpha) - this._shaderSets.at( - 6 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(6).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 6 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(6).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(6).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(6).shaderProgram, + 'a_position' + ); + this._shaderSets.at(6).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(6).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(6).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(6).shaderProgram, 's_texture0' @@ -1446,38 +1524,43 @@ export class CubismShader_WebGL { this._shaderSets.at(6).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 6 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(6).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 6 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(6).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 6 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(6).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(6).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(6).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(6).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(6).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(6).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(6).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(6).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(6).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(6).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(6).shaderProgram, + 'u_screenColor' + ); // 乗算(PremultipliedAlpha) - this._shaderSets.at( - 7 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(7).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 7 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(7).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(7).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(7).shaderProgram, + 'a_position' + ); + this._shaderSets.at(7).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(7).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(7).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(7).shaderProgram, 's_texture0' @@ -1486,26 +1569,33 @@ export class CubismShader_WebGL { this._shaderSets.at(7).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 7 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(7).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(7).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(7).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(7).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(7).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(7).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(7).shaderProgram, + 'u_screenColor' + ); // 乗算(クリッピング、PremultipliedAlpha) - this._shaderSets.at( - 8 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(8).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 8 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(8).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(8).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(8).shaderProgram, + 'a_position' + ); + this._shaderSets.at(8).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(8).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(8).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(8).shaderProgram, 's_texture0' @@ -1518,38 +1608,43 @@ export class CubismShader_WebGL { this._shaderSets.at(8).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 8 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(8).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 8 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(8).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 8 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(8).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(8).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(8).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(8).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(8).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(8).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(8).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(8).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(8).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(8).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(8).shaderProgram, + 'u_screenColor' + ); // 乗算(クリッピング・反転、PremultipliedAlpha) - this._shaderSets.at( - 9 - ).attributePositionLocation = this.gl.getAttribLocation( - this._shaderSets.at(9).shaderProgram, - 'a_position' - ); - this._shaderSets.at( - 9 - ).attributeTexCoordLocation = this.gl.getAttribLocation( - this._shaderSets.at(9).shaderProgram, - 'a_texCoord' - ); + this._shaderSets.at(9).attributePositionLocation = + this.gl.getAttribLocation( + this._shaderSets.at(9).shaderProgram, + 'a_position' + ); + this._shaderSets.at(9).attributeTexCoordLocation = + this.gl.getAttribLocation( + this._shaderSets.at(9).shaderProgram, + 'a_texCoord' + ); this._shaderSets.at(9).samplerTexture0Location = this.gl.getUniformLocation( this._shaderSets.at(9).shaderProgram, 's_texture0' @@ -1562,24 +1657,31 @@ export class CubismShader_WebGL { this._shaderSets.at(9).shaderProgram, 'u_matrix' ); - this._shaderSets.at( - 9 - ).uniformClipMatrixLocation = this.gl.getUniformLocation( - this._shaderSets.at(9).shaderProgram, - 'u_clipMatrix' - ); - this._shaderSets.at( - 9 - ).uniformChannelFlagLocation = this.gl.getUniformLocation( - this._shaderSets.at(9).shaderProgram, - 'u_channelFlag' - ); - this._shaderSets.at( - 9 - ).uniformBaseColorLocation = this.gl.getUniformLocation( - this._shaderSets.at(9).shaderProgram, - 'u_baseColor' - ); + this._shaderSets.at(9).uniformClipMatrixLocation = + this.gl.getUniformLocation( + this._shaderSets.at(9).shaderProgram, + 'u_clipMatrix' + ); + this._shaderSets.at(9).uniformChannelFlagLocation = + this.gl.getUniformLocation( + this._shaderSets.at(9).shaderProgram, + 'u_channelFlag' + ); + this._shaderSets.at(9).uniformBaseColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(9).shaderProgram, + 'u_baseColor' + ); + this._shaderSets.at(9).uniformMultiplyColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(9).shaderProgram, + 'u_multiplyColor' + ); + this._shaderSets.at(9).uniformScreenColorLocation = + this.gl.getUniformLocation( + this._shaderSets.at(9).shaderProgram, + 'u_screenColor' + ); } /** @@ -1707,6 +1809,8 @@ export class CubismShaderSet { samplerTexture1Location: WebGLUniformLocation; // シェーダープログラムに渡す変数のアドレス(Texture1) uniformBaseColorLocation: WebGLUniformLocation; // シェーダープログラムに渡す変数のアドレス(BaseColor) uniformChannelFlagLocation: WebGLUniformLocation; // シェーダープログラムに渡す変数のアドレス(ChannelFlag) + uniformMultiplyColorLocation: WebGLUniformLocation; // シェーダープログラムに渡す変数のアドレス(MultiplyColor) + uniformScreenColorLocation: WebGLUniformLocation; // シェーダープログラムに渡す変数のアドレス(ScreenColor) } export enum ShaderNames { @@ -1726,7 +1830,7 @@ export enum ShaderNames { // Mult ShaderNames_MultPremultipliedAlpha, ShaderNames_MultMaskedPremultipliedAlpha, - ShaderNames_MultMaskedPremultipliedAlphaInverted + ShaderNames_MultMaskedPremultipliedAlphaInverted, } export const vertexShaderSrcSetupMask = @@ -1796,9 +1900,15 @@ export const fragmentShaderSrcPremultipliedAlpha = 'varying vec2 v_texCoord;' + //v2f.texcoord 'uniform vec4 u_baseColor;' + 'uniform sampler2D s_texture0;' + //_MainTex + 'uniform vec4 u_multiplyColor;' + + 'uniform vec4 u_screenColor;' + 'void main()' + '{' + - ' gl_FragColor = texture2D(s_texture0 , v_texCoord) * u_baseColor;' + + ' vec4 texColor = texture2D(s_texture0, v_texCoord);' + + ' texColor.rgb = texColor.rgb * u_multiplyColor.rgb;' + + ' texColor.rgb = (texColor.rgb + u_screenColor.rgb * texColor.a) - (texColor.rgb * u_screenColor.rgb);' + + ' vec4 color = texColor * u_baseColor;' + + ' gl_FragColor = vec4(color.rgb, color.a);' + '}'; // Normal (クリッピングされたものの描画用、PremultipliedAlpha兼用) @@ -1810,9 +1920,14 @@ export const fragmentShaderSrcMaskPremultipliedAlpha = 'uniform vec4 u_channelFlag;' + 'uniform sampler2D s_texture0;' + 'uniform sampler2D s_texture1;' + + 'uniform vec4 u_multiplyColor;' + + 'uniform vec4 u_screenColor;' + 'void main()' + '{' + - ' vec4 col_formask = texture2D(s_texture0 , v_texCoord) * u_baseColor;' + + ' vec4 texColor = texture2D(s_texture0, v_texCoord);' + + ' texColor.rgb = texColor.rgb * u_multiplyColor.rgb;' + + ' texColor.rgb = (texColor.rgb + u_screenColor.rgb * texColor.a) - (texColor.rgb * u_screenColor.rgb);' + + ' vec4 col_formask = texColor * u_baseColor;' + ' vec4 clipMask = (1.0 - texture2D(s_texture1, v_clipPos.xy / v_clipPos.w)) * u_channelFlag;' + ' float maskVal = clipMask.r + clipMask.g + clipMask.b + clipMask.a;' + ' col_formask = col_formask * maskVal;' + @@ -1822,19 +1937,24 @@ export const fragmentShaderSrcMaskPremultipliedAlpha = // Normal & Add & Mult 共通(クリッピングされて反転使用の描画用、PremultipliedAlphaの場合) export const fragmentShaderSrcMaskInvertedPremultipliedAlpha = 'precision mediump float;' + - 'varying vec2 v_texCoord;' + - 'varying vec4 v_clipPos;' + + 'varying vec2 v_texCoord;' + + 'varying vec4 v_clipPos;' + 'uniform sampler2D s_texture0;' + 'uniform sampler2D s_texture1;' + - 'uniform vec4 u_channelFlag;' + - 'uniform vec4 u_baseColor;' + + 'uniform vec4 u_channelFlag;' + + 'uniform vec4 u_baseColor;' + + 'uniform vec4 u_multiplyColor;' + + 'uniform vec4 u_screenColor;' + 'void main()' + '{' + - 'vec4 col_formask = texture2D(s_texture0, v_texCoord) * u_baseColor;' + - 'vec4 clipMask = (1.0 - texture2D(s_texture1, v_clipPos.xy / v_clipPos.w)) * u_channelFlag;' + - 'float maskVal = clipMask.r + clipMask.g + clipMask.b + clipMask.a;' + - 'col_formask = col_formask * (1.0 - maskVal);' + - 'gl_FragColor = col_formask;' + + ' vec4 texColor = texture2D(s_texture0, v_texCoord);' + + ' texColor.rgb = texColor.rgb * u_multiplyColor.rgb;' + + ' texColor.rgb = (texColor.rgb + u_screenColor.rgb * texColor.a) - (texColor.rgb * u_screenColor.rgb);' + + ' vec4 col_formask = texColor * u_baseColor;' + + ' vec4 clipMask = (1.0 - texture2D(s_texture1, v_clipPos.xy / v_clipPos.w)) * u_channelFlag;' + + ' float maskVal = clipMask.r + clipMask.g + clipMask.b + clipMask.a;' + + ' col_formask = col_formask * (1.0 - maskVal);' + + ' gl_FragColor = col_formask;' + '}'; /** @@ -1924,9 +2044,9 @@ export class CubismRenderer_WebGL extends CubismRenderer { this._textures = new csmMap(); this._sortedDrawableIndexList = new csmVector(); this._bufferData = { - vertex: WebGLBuffer = null, - uv: WebGLBuffer = null, - index: WebGLBuffer = null + vertex: (WebGLBuffer = null), + uv: (WebGLBuffer = null), + index: (WebGLBuffer = null), }; // テクスチャ対応マップの容量を確保しておく @@ -2001,6 +2121,8 @@ export class CubismRenderer_WebGL extends CubismRenderer { this.getModel().getDrawableVertexIndices(drawableIndex), this.getModel().getDrawableVertices(drawableIndex), this.getModel().getDrawableVertexUvs(drawableIndex), + this.getModel().getMultiplyColor(drawableIndex), + this.getModel().getScreenColor(drawableIndex), this.getModel().getDrawableOpacity(drawableIndex), this.getModel().getDrawableBlendMode(drawableIndex), this.getModel().getDrawableInvertedMaskBit(drawableIndex) @@ -2029,6 +2151,8 @@ export class CubismRenderer_WebGL extends CubismRenderer { indexArray: Uint16Array, vertexArray: Float32Array, uvArray: Float32Array, + multiplyColor: CubismTextureColor, + screenColor: CubismTextureColor, opacity: number, colorBlendMode: CubismBlendMode, invertedMask: boolean @@ -2075,6 +2199,8 @@ export class CubismRenderer_WebGL extends CubismRenderer { opacity, colorBlendMode, modelColorRGBA, + multiplyColor, + screenColor, this.isPremultipliedAlpha(), this.getMvpMatrix(), invertedMask @@ -2119,12 +2245,6 @@ export class CubismRenderer_WebGL extends CubismRenderer { public preDraw(): void { if (this.firstDraw) { this.firstDraw = false; - - // 拡張機能を有効にする - this._anisortopy = - this.gl.getExtension('EXT_texture_filter_anisotropic') || - this.gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || - this.gl.getExtension('MOZ_EXT_texture_filter_anisotropic'); } this.gl.disable(this.gl.SCISSOR_TEST); @@ -2139,6 +2259,18 @@ export class CubismRenderer_WebGL extends CubismRenderer { this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null); // 前にバッファがバインドされていたら破棄する必要がある this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null); + + // 異方性フィルタリングを適用する + if (this.getAnisotropy() > 0.0 && this._extension) { + for (let i = 0; i < this._textures.getSize(); ++i) { + this.gl.bindTexture(this.gl.TEXTURE_2D, this._textures.getValue(i)); + this.gl.texParameterf( + this.gl.TEXTURE_2D, + this._extension.TEXTURE_MAX_ANISOTROPY_EXT, + this.getAnisotropy() + ); + } + } } /** @@ -2178,6 +2310,12 @@ export class CubismRenderer_WebGL extends CubismRenderer { this.gl = gl; this._clippingManager.setGL(gl); CubismShader_WebGL.getInstance().setGl(gl); + + // 異方性フィルタリングが使用できるかチェック + this._extension = + this.gl.getExtension('EXT_texture_filter_anisotropic') || + this.gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || + this.gl.getExtension('MOZ_EXT_texture_filter_anisotropic'); } _textures: csmMap; // モデルが参照するテクスチャとレンダラでバインドしているテクスチャとのマップ @@ -2191,6 +2329,7 @@ export class CubismRenderer_WebGL extends CubismRenderer { uv: WebGLBuffer; index: WebGLBuffer; }; // 頂点バッファデータ + _extension: any; // 拡張機能 gl: WebGLRenderingContext; // webglコンテキスト } diff --git a/src/utils/cubismdebug.ts b/src/utils/cubismdebug.ts index 4d6f143..c68199e 100644 --- a/src/utils/cubismdebug.ts +++ b/src/utils/cubismdebug.ts @@ -11,7 +11,7 @@ import { CSM_LOG_LEVEL_ERROR, CSM_LOG_LEVEL_INFO, CSM_LOG_LEVEL_VERBOSE, - CSM_LOG_LEVEL_WARNING + CSM_LOG_LEVEL_WARNING, } from '../cubismframeworkconfig'; import { CubismFramework, LogLevel } from '../live2dcubismframework'; diff --git a/src/utils/cubismjson.ts b/src/utils/cubismjson.ts index d8097a0..39752ec 100644 --- a/src/utils/cubismjson.ts +++ b/src/utils/cubismjson.ts @@ -307,7 +307,7 @@ export class CubismJson { * return false: 失敗 */ public parseBytes(buffer: ArrayBuffer, size: number): boolean { - const endPos: number[] = new Array(1); // 参照渡しにするため配列 + const endPos: number[] = new Array(1); // 参照渡しにするため配列 const decodeBuffer: string = this.arrayBufferToString(buffer); this._root = this.parseValue(decodeBuffer, size, 0, endPos);