From f8f3bc0b86ae7907034042d9525ba84a0e191b24 Mon Sep 17 00:00:00 2001 From: Okiki Date: Tue, 7 Feb 2023 03:40:38 +0000 Subject: [PATCH 1/3] chore: ... --- package.json | 34 +- pnpm-lock.yaml | 2254 ++++++++++++++++++++++++---------- src/easing.ts | 367 ++++++ src/index.ts | 541 ++------ src/interpolate/batch.ts | 277 +++++ src/interpolate/index.ts | 127 ++ src/interpolate/iterators.ts | 254 ++++ src/utils.ts | 22 +- 8 files changed, 2727 insertions(+), 1149 deletions(-) create mode 100644 src/easing.ts create mode 100644 src/interpolate/batch.ts create mode 100644 src/interpolate/index.ts create mode 100644 src/interpolate/iterators.ts diff --git a/package.json b/package.json index 0f63add..320703d 100644 --- a/package.json +++ b/package.json @@ -107,32 +107,32 @@ }, "homepage": "https://spring-easing.okikio.dev", "devDependencies": { - "@commitlint/cli": "^17.1.2", - "@commitlint/config-conventional": "^17.1.0", - "@semantic-release/changelog": "^6.0.1", + "@commitlint/cli": "^17.4.2", + "@commitlint/config-conventional": "^17.4.2", + "@semantic-release/changelog": "^6.0.2", "@semantic-release/git": "^10.0.1", - "@types/web": "^0.0.73", - "esbuild": "^0.15.8", + "@types/web": "^0.0.90", + "esbuild": "^0.17.6", "esno": "^0.16.3", "fast-glob": "^3.2.12", - "hastscript": "^7.0.2", - "husky": "^8.0.1", - "pnpm": "^7.12.0", + "hastscript": "^7.2.0", + "husky": "^8.0.3", + "pnpm": "^7.26.3", "rehype-accessible-emojis": "^0.3.2", "rehype-external-links": "^2.0.1", "rehype-parse": "^8.0.4", - "rehype-slug": "^5.0.1", + "rehype-slug": "^5.1.0", "rehype-stringify": "^9.0.3", "rehype-urls": "^1.1.1", - "semantic-release": "^19.0.5", - "typedoc": "^0.23.15", - "typedoc-plugin-extras": "^2.3.0", + "semantic-release": "^20.1.0", + "typedoc": "^0.23.24", + "typedoc-plugin-extras": "^2.3.2", "typedoc-plugin-inline-sources": "^1.0.1", - "typedoc-plugin-mdn-links": "^2.0.0", - "typescript": "^4.8.3", + "typedoc-plugin-mdn-links": "^2.0.2", + "typescript": "^4.9.5", "unified": "^10.1.2", - "vite": "^3.1.3", - "vite-plugin-dts": "^1.5.0", - "vitest": "^0.23.4" + "vite": "^4.1.1", + "vite-plugin-dts": "^1.7.2", + "vitest": "^0.28.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 253f0dd..fb72836 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,62 +1,62 @@ lockfileVersion: 5.4 specifiers: - '@commitlint/cli': ^17.1.2 - '@commitlint/config-conventional': ^17.1.0 - '@semantic-release/changelog': ^6.0.1 + '@commitlint/cli': ^17.4.2 + '@commitlint/config-conventional': ^17.4.2 + '@semantic-release/changelog': ^6.0.2 '@semantic-release/git': ^10.0.1 - '@types/web': ^0.0.73 - esbuild: ^0.15.8 + '@types/web': ^0.0.90 + esbuild: ^0.17.6 esno: ^0.16.3 fast-glob: ^3.2.12 - hastscript: ^7.0.2 - husky: ^8.0.1 - pnpm: ^7.12.0 + hastscript: ^7.2.0 + husky: ^8.0.3 + pnpm: ^7.26.3 rehype-accessible-emojis: ^0.3.2 rehype-external-links: ^2.0.1 rehype-parse: ^8.0.4 - rehype-slug: ^5.0.1 + rehype-slug: ^5.1.0 rehype-stringify: ^9.0.3 rehype-urls: ^1.1.1 - semantic-release: ^19.0.5 - typedoc: ^0.23.15 - typedoc-plugin-extras: ^2.3.0 + semantic-release: ^20.1.0 + typedoc: ^0.23.24 + typedoc-plugin-extras: ^2.3.2 typedoc-plugin-inline-sources: ^1.0.1 - typedoc-plugin-mdn-links: ^2.0.0 - typescript: ^4.8.3 + typedoc-plugin-mdn-links: ^2.0.2 + typescript: ^4.9.5 unified: ^10.1.2 - vite: ^3.1.3 - vite-plugin-dts: ^1.5.0 - vitest: ^0.23.4 + vite: ^4.1.1 + vite-plugin-dts: ^1.7.2 + vitest: ^0.28.4 devDependencies: - '@commitlint/cli': 17.1.2 - '@commitlint/config-conventional': 17.1.0 - '@semantic-release/changelog': 6.0.1_semantic-release@19.0.5 - '@semantic-release/git': 10.0.1_semantic-release@19.0.5 - '@types/web': 0.0.73 - esbuild: 0.15.8 + '@commitlint/cli': 17.4.2 + '@commitlint/config-conventional': 17.4.2 + '@semantic-release/changelog': 6.0.2_semantic-release@20.1.0 + '@semantic-release/git': 10.0.1_semantic-release@20.1.0 + '@types/web': 0.0.90 + esbuild: 0.17.6 esno: 0.16.3 fast-glob: 3.2.12 - hastscript: 7.0.2 - husky: 8.0.1 - pnpm: 7.12.0 + hastscript: 7.2.0 + husky: 8.0.3 + pnpm: 7.26.3 rehype-accessible-emojis: 0.3.2 rehype-external-links: 2.0.1 rehype-parse: 8.0.4 - rehype-slug: 5.0.1 + rehype-slug: 5.1.0 rehype-stringify: 9.0.3 rehype-urls: 1.1.1 - semantic-release: 19.0.5 - typedoc: 0.23.15_typescript@4.8.3 - typedoc-plugin-extras: 2.3.0_typedoc@0.23.15 - typedoc-plugin-inline-sources: 1.0.1_typedoc@0.23.15 - typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.15 - typescript: 4.8.3 + semantic-release: 20.1.0 + typedoc: 0.23.24_typescript@4.9.5 + typedoc-plugin-extras: 2.3.2_typedoc@0.23.24 + typedoc-plugin-inline-sources: 1.0.1_typedoc@0.23.24 + typedoc-plugin-mdn-links: 2.0.2_typedoc@0.23.24 + typescript: 4.9.5 unified: 10.1.2 - vite: 3.1.3 - vite-plugin-dts: 1.5.0_vite@3.1.3 - vitest: 0.23.4 + vite: 4.1.1 + vite-plugin-dts: 1.7.2_vite@4.1.1 + vitest: 0.28.4 packages: @@ -88,163 +88,169 @@ packages: dev: true optional: true - /@commitlint/cli/17.1.2: - resolution: {integrity: sha512-h/4Hlka3bvCLbnxf0Er2ri5A44VMlbMSkdTRp8Adv2tRiklSTRIoPGs7OEXDv3EoDs2AAzILiPookgM4Gi7LOw==} + /@commitlint/cli/17.4.2: + resolution: {integrity: sha512-0rPGJ2O1owhpxMIXL9YJ2CgPkdrFLKZElIZHXDN8L8+qWK1DGH7Q7IelBT1pchXTYTuDlqkOTdh//aTvT3bSUA==} engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 17.0.0 - '@commitlint/lint': 17.1.0 - '@commitlint/load': 17.1.2 - '@commitlint/read': 17.1.0 - '@commitlint/types': 17.0.0 + '@commitlint/format': 17.4.0 + '@commitlint/lint': 17.4.2 + '@commitlint/load': 17.4.2 + '@commitlint/read': 17.4.2 + '@commitlint/types': 17.4.0 execa: 5.1.1 - lodash: 4.17.21 + lodash.isfunction: 3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.5.1 + yargs: 17.6.2 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.1.0: - resolution: {integrity: sha512-WU2p0c9/jLi8k2q2YrDV96Y8XVswQOceIQ/wyJvQxawJSCasLdRB3kUIYdNjOCJsxkpoUlV/b90ZPxp1MYZDiA==} + /@commitlint/config-conventional/17.4.2: + resolution: {integrity: sha512-JVo1moSj5eDMoql159q8zKCU8lkOhQ+b23Vl3LVVrS6PXDLQIELnJ34ChQmFVbBdSSRNAbbXnRDhosFU+wnuHw==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.1.0: - resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} + /@commitlint/config-validator/17.4.0: + resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 - ajv: 8.11.0 + '@commitlint/types': 17.4.0 + ajv: 8.12.0 dev: true - /@commitlint/ensure/17.0.0: - resolution: {integrity: sha512-M2hkJnNXvEni59S0QPOnqCKIK52G1XyXBGw51mvh7OXDudCmZ9tZiIPpU882p475Mhx48Ien1MbWjCP1zlyC0A==} + /@commitlint/ensure/17.4.0: + resolution: {integrity: sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 - lodash: 4.17.21 + '@commitlint/types': 17.4.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/17.0.0: - resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} + /@commitlint/execute-rule/17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} engines: {node: '>=v14'} dev: true - /@commitlint/format/17.0.0: - resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} + /@commitlint/format/17.4.0: + resolution: {integrity: sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.0 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.1.0: - resolution: {integrity: sha512-JITWKDMHhIh8IpdIbcbuH9rEQJty1ZWelgjleTFrVRAcEwN/sPzk1aVUXRIZNXMJWbZj8vtXRJnFihrml8uECQ==} + /@commitlint/is-ignored/17.4.2: + resolution: {integrity: sha512-1b2Y2qJ6n7bHG9K6h8S4lBGUl6kc7mMhJN9gy1SQfUZqe92ToDjUTtgNWb6LbzR1X8Cq4SEus4VU8Z/riEa94Q==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 - semver: 7.3.7 + '@commitlint/types': 17.4.0 + semver: 7.3.8 dev: true - /@commitlint/lint/17.1.0: - resolution: {integrity: sha512-ltpqM2ogt/+SDhUaScFo0MdscncEF96lvQTPMM/VTTWlw7sTGLLWkOOppsee2MN/uLNNWjQ7kqkd4h6JqoM9AQ==} + /@commitlint/lint/17.4.2: + resolution: {integrity: sha512-HcymabrdBhsDMNzIv146+ZPNBPBK5gMNsVH+el2lCagnYgCi/4ixrHooeVyS64Fgce2K26+MC7OQ4vVH8wQWVw==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.1.0 - '@commitlint/parse': 17.0.0 - '@commitlint/rules': 17.0.0 - '@commitlint/types': 17.0.0 + '@commitlint/is-ignored': 17.4.2 + '@commitlint/parse': 17.4.2 + '@commitlint/rules': 17.4.2 + '@commitlint/types': 17.4.0 dev: true - /@commitlint/load/17.1.2: - resolution: {integrity: sha512-sk2p/jFYAWLChIfOIp/MGSIn/WzZ0vkc3afw+l4X8hGEYkvDe4gQUUAVxjl/6xMRn0HgnSLMZ04xXh5pkTsmgg==} + /@commitlint/load/17.4.2: + resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/execute-rule': 17.0.0 - '@commitlint/resolve-extends': 17.1.0 - '@commitlint/types': 17.0.0 - '@types/node': 14.18.29 + '@commitlint/config-validator': 17.4.0 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.4.0 + '@commitlint/types': 17.4.0 + '@types/node': 18.11.19 chalk: 4.1.2 - cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 4.1.0_3owiowz3ujipd4k6pbqn3n7oui - lodash: 4.17.21 + cosmiconfig: 8.0.0 + cosmiconfig-typescript-loader: 4.3.0_q6dimmvgduffavfq3obt6abtea + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_ck2axrxkiif44rdbzjywaqjysa - typescript: 4.8.3 + ts-node: 10.9.1_qqdszkrtcshgbphghj7vnvrrby + typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.0.0: - resolution: {integrity: sha512-LpcwYtN+lBlfZijHUdVr8aNFTVpHjuHI52BnfoV01TF7iSLnia0jttzpLkrLmI8HNQz6Vhr9UrxDWtKZiMGsBw==} + /@commitlint/message/17.4.2: + resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.0.0: - resolution: {integrity: sha512-cKcpfTIQYDG1ywTIr5AG0RAiLBr1gudqEsmAGCTtj8ffDChbBRxm6xXs2nv7GvmJN7msOt7vOKleLvcMmRa1+A==} + /@commitlint/parse/17.4.2: + resolution: {integrity: sha512-DK4EwqhxfXpyCA+UH8TBRIAXAfmmX4q9QRBz/2h9F9sI91yt6mltTrL6TKURMcjUVmgaB80wgS9QybNIyVBIJA==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.0 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.1.0: - resolution: {integrity: sha512-73BoFNBA/3Ozo2JQvGsE0J8SdrJAWGfZQRSHqvKaqgmY042Su4gXQLqvAzgr55S9DI1l9TiU/5WDuh8IE86d/g==} + /@commitlint/read/17.4.2: + resolution: {integrity: sha512-hasYOdbhEg+W4hi0InmXHxtD/1favB4WdwyFxs1eOy/DvMw6+2IZBmATgGOlqhahsypk4kChhxjAFJAZ2F+JBg==} engines: {node: '>=v14'} dependencies: - '@commitlint/top-level': 17.0.0 - '@commitlint/types': 17.0.0 - fs-extra: 10.1.0 + '@commitlint/top-level': 17.4.0 + '@commitlint/types': 17.4.0 + fs-extra: 11.1.0 git-raw-commits: 2.0.11 - minimist: 1.2.6 + minimist: 1.2.7 dev: true - /@commitlint/resolve-extends/17.1.0: - resolution: {integrity: sha512-jqKm00LJ59T0O8O4bH4oMa4XyJVEOK4GzH8Qye9XKji+Q1FxhZznxMV/bDLyYkzbTodBt9sL0WLql8wMtRTbqQ==} + /@commitlint/resolve-extends/17.4.0: + resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/types': 17.0.0 + '@commitlint/config-validator': 17.4.0 + '@commitlint/types': 17.4.0 import-fresh: 3.3.0 - lodash: 4.17.21 + lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.0.0: - resolution: {integrity: sha512-45nIy3dERKXWpnwX9HeBzK5SepHwlDxdGBfmedXhL30fmFCkJOdxHyOJsh0+B0RaVsLGT01NELpfzJUmtpDwdQ==} + /@commitlint/rules/17.4.2: + resolution: {integrity: sha512-OGrPsMb9Fx3/bZ64/EzJehY9YDSGWzp81Pj+zJiY+r/NSgJI3nUYdlS37jykNIugzazdEXfMtQ10kmA+Kx2pZQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.0.0 - '@commitlint/message': 17.0.0 - '@commitlint/to-lines': 17.0.0 - '@commitlint/types': 17.0.0 + '@commitlint/ensure': 17.4.0 + '@commitlint/message': 17.4.2 + '@commitlint/to-lines': 17.4.0 + '@commitlint/types': 17.4.0 execa: 5.1.1 dev: true - /@commitlint/to-lines/17.0.0: - resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==} + /@commitlint/to-lines/17.4.0: + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} engines: {node: '>=v14'} dev: true - /@commitlint/top-level/17.0.0: - resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==} + /@commitlint/top-level/17.4.0: + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.0.0: - resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} + /@commitlint/types/17.4.0: + resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 @@ -257,40 +263,227 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@esbuild-kit/cjs-loader/2.3.3: - resolution: {integrity: sha512-Rt4O1mXlPEDVxvjsHLgbtHVdUXYK9C1/6ThpQnt7FaXIjUOsI6qhHYMgALhNnlIMZffag44lXd6Dqgx3xALbpQ==} + /@esbuild-kit/cjs-loader/2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: - '@esbuild-kit/core-utils': 2.3.1 - get-tsconfig: 4.2.0 + '@esbuild-kit/core-utils': 3.0.0 + get-tsconfig: 4.4.0 dev: true - /@esbuild-kit/core-utils/2.3.1: - resolution: {integrity: sha512-y2ThiUw/AkKCS7mIBF/EGce79aHIomOVFAIFmF5Z0DRZTNXVg9uFDXBkhAu7PAj64Po1ELfKJN9R7/zs3PIEAg==} + /@esbuild-kit/core-utils/3.0.0: + resolution: {integrity: sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==} dependencies: - esbuild: 0.15.8 + esbuild: 0.15.18 source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader/2.4.2: - resolution: {integrity: sha512-N9dPKAj8WOx6djVnStgILWXip4fjDcBk9L7azO0/uQDpu8Ee0eaL78mkN4Acid9BzvNAKWwdYXFJZnsVahNEew==} + /@esbuild-kit/esm-loader/2.5.5: + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: - '@esbuild-kit/core-utils': 2.3.1 - get-tsconfig: 4.2.0 + '@esbuild-kit/core-utils': 3.0.0 + get-tsconfig: 4.4.0 dev: true - /@esbuild/android-arm/0.15.8: - resolution: {integrity: sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==} + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true - dependencies: - esbuild-wasm: 0.15.8 dev: true optional: true - /@esbuild/linux-loong64/0.15.8: - resolution: {integrity: sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==} + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm/0.17.6: + resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.17.6: + resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.16.17: + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.17.6: + resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.16.17: + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.17.6: + resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.16.17: + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.17.6: + resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.16.17: + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.17.6: + resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.16.17: + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.17.6: + resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.16.17: + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.17.6: + resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.16.17: + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.17.6: + resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.16.17: + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.17.6: + resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.16.17: + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -298,6 +491,213 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.17.6: + resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.16.17: + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.17.6: + resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.16.17: + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.17.6: + resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.16.17: + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.17.6: + resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.16.17: + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.17.6: + resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.16.17: + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.17.6: + resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.16.17: + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.17.6: + resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.16.17: + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.17.6: + resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.16.17: + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.17.6: + resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.16.17: + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.17.6: + resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.16.17: + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.17.6: + resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.16.17: + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.17.6: + resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} @@ -314,30 +714,34 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@microsoft/api-extractor-model/7.24.1: - resolution: {integrity: sha512-H2KrRbO3beDnH2Fwt+3zXgK8KagFEzHHWNUR7weSEOssabGH5T/aADNR0k1FBidKpXokrvMM6SHamdMCVJjlBg==} + /@microsoft/api-extractor-model/7.26.3: + resolution: {integrity: sha512-1Y/JOkaCF5zE6P56saA0yPzEb7ZJwoF2d8fUYdzZY4I0p1gmqGbNk1h9WguvrN5hANg+2CaqcOX0eh+l4SAhJw==} dependencies: - '@microsoft/tsdoc': 0.14.1 + '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.51.2 + '@rushstack/node-core-library': 3.55.1 + transitivePeerDependencies: + - '@types/node' dev: true - /@microsoft/api-extractor/7.31.1: - resolution: {integrity: sha512-rWEE+S1to8B2X8E8fVttwmCNS7yfvTNzlFGdla/OT8bJeS94L7Lw1Wkynwsl59gb46yvMZrQDXiRkXWzxgvc8g==} + /@microsoft/api-extractor/7.34.3: + resolution: {integrity: sha512-vXpU+i/MMinVzDxbLo3of1Sx/IS5bwOZl4XrX8YyqNBXFvovEer5ex0wckWumkBErDZtLOMp3zhZfYL3W7h3cg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.24.1 - '@microsoft/tsdoc': 0.14.1 + '@microsoft/api-extractor-model': 7.26.3 + '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.51.2 - '@rushstack/rig-package': 0.3.15 - '@rushstack/ts-command-line': 4.12.3 + '@rushstack/node-core-library': 3.55.1 + '@rushstack/rig-package': 0.3.17 + '@rushstack/ts-command-line': 4.13.1 colors: 1.2.5 lodash: 4.17.21 - resolve: 1.17.0 - semver: 7.3.7 + resolve: 1.22.1 + semver: 7.3.8 source-map: 0.6.1 - typescript: 4.7.4 + typescript: 4.8.4 + transitivePeerDependencies: + - '@types/node' dev: true /@microsoft/tsdoc-config/0.16.2: @@ -349,10 +753,6 @@ packages: resolve: 1.19.0 dev: true - /@microsoft/tsdoc/0.14.1: - resolution: {integrity: sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==} - dev: true - /@microsoft/tsdoc/0.14.2: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true @@ -375,147 +775,180 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.15.0 dev: true - /@octokit/auth-token/3.0.1: - resolution: {integrity: sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==} + /@octokit/auth-token/3.0.3: + resolution: {integrity: sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 7.5.0 + '@octokit/types': 9.0.0 dev: true - /@octokit/core/4.0.5: - resolution: {integrity: sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==} + /@octokit/core/4.2.0: + resolution: {integrity: sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==} engines: {node: '>= 14'} dependencies: - '@octokit/auth-token': 3.0.1 - '@octokit/graphql': 5.0.1 - '@octokit/request': 6.2.1 - '@octokit/request-error': 3.0.1 - '@octokit/types': 7.5.0 - before-after-hook: 2.2.2 + '@octokit/auth-token': 3.0.3 + '@octokit/graphql': 5.0.5 + '@octokit/request': 6.2.3 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.0.0 + before-after-hook: 2.2.3 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: true - /@octokit/endpoint/7.0.2: - resolution: {integrity: sha512-8/AUACfE9vpRpehE6ZLfEtzkibe5nfsSwFZVMsG8qabqRt1M81qZYUFRZa1B8w8lP6cdfDJfRq9HWS+MbmR7tw==} + /@octokit/endpoint/7.0.5: + resolution: {integrity: sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 7.5.0 + '@octokit/types': 9.0.0 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: true - /@octokit/graphql/5.0.1: - resolution: {integrity: sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==} + /@octokit/graphql/5.0.5: + resolution: {integrity: sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==} engines: {node: '>= 14'} dependencies: - '@octokit/request': 6.2.1 - '@octokit/types': 7.5.0 + '@octokit/request': 6.2.3 + '@octokit/types': 9.0.0 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: true - /@octokit/openapi-types/13.12.0: - resolution: {integrity: sha512-1QYzZrwnn3rTQE7ZoSxXrO8lhu0aIbac1c+qIPOPEaVXBWSaUyLV1x9yt4uDQOwmu6u5ywVS8OJgs+ErDLf6vQ==} + /@octokit/openapi-types/16.0.0: + resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==} dev: true - /@octokit/plugin-paginate-rest/4.3.1_@octokit+core@4.0.5: - resolution: {integrity: sha512-h8KKxESmSFTcXX409CAxlaOYscEDvN2KGQRsLCGT1NSqRW+D6EXLVQ8vuHhFznS9MuH9QYw1GfsUN30bg8hjVA==} + /@octokit/plugin-paginate-rest/6.0.0_@octokit+core@4.2.0: + resolution: {integrity: sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==} engines: {node: '>= 14'} peerDependencies: '@octokit/core': '>=4' dependencies: - '@octokit/core': 4.0.5 - '@octokit/types': 7.5.0 + '@octokit/core': 4.2.0 + '@octokit/types': 9.0.0 dev: true - /@octokit/plugin-request-log/1.0.4_@octokit+core@4.0.5: + /@octokit/plugin-request-log/1.0.4_@octokit+core@4.2.0: resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} peerDependencies: '@octokit/core': '>=3' dependencies: - '@octokit/core': 4.0.5 + '@octokit/core': 4.2.0 dev: true - /@octokit/plugin-rest-endpoint-methods/6.6.2_@octokit+core@4.0.5: - resolution: {integrity: sha512-n9dL5KMpz9qVFSNdcVWC8ZPbl68QbTk7+CMPXCXqaMZOLn1n1YuoSFFCy84Ge0fx333fUqpnBHv8BFjwGtUQkA==} + /@octokit/plugin-rest-endpoint-methods/7.0.1_@octokit+core@4.2.0: + resolution: {integrity: sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==} engines: {node: '>= 14'} peerDependencies: '@octokit/core': '>=3' dependencies: - '@octokit/core': 4.0.5 - '@octokit/types': 7.5.0 + '@octokit/core': 4.2.0 + '@octokit/types': 9.0.0 deprecation: 2.3.1 dev: true - /@octokit/request-error/3.0.1: - resolution: {integrity: sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==} + /@octokit/request-error/3.0.3: + resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 7.5.0 + '@octokit/types': 9.0.0 deprecation: 2.3.1 once: 1.4.0 dev: true - /@octokit/request/6.2.1: - resolution: {integrity: sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==} + /@octokit/request/6.2.3: + resolution: {integrity: sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==} engines: {node: '>= 14'} dependencies: - '@octokit/endpoint': 7.0.2 - '@octokit/request-error': 3.0.1 - '@octokit/types': 7.5.0 + '@octokit/endpoint': 7.0.5 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.0.0 is-plain-object: 5.0.0 - node-fetch: 2.6.7 + node-fetch: 2.6.9 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: true - /@octokit/rest/19.0.4: - resolution: {integrity: sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==} + /@octokit/rest/19.0.7: + resolution: {integrity: sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==} engines: {node: '>= 14'} dependencies: - '@octokit/core': 4.0.5 - '@octokit/plugin-paginate-rest': 4.3.1_@octokit+core@4.0.5 - '@octokit/plugin-request-log': 1.0.4_@octokit+core@4.0.5 - '@octokit/plugin-rest-endpoint-methods': 6.6.2_@octokit+core@4.0.5 + '@octokit/core': 4.2.0 + '@octokit/plugin-paginate-rest': 6.0.0_@octokit+core@4.2.0 + '@octokit/plugin-request-log': 1.0.4_@octokit+core@4.2.0 + '@octokit/plugin-rest-endpoint-methods': 7.0.1_@octokit+core@4.2.0 transitivePeerDependencies: - encoding dev: true - /@octokit/types/7.5.0: - resolution: {integrity: sha512-aHm+olfIZjQpzoODpl+RCZzchKOrdSLJs+yfI7pMMcmB19Li6vidgx0DwUDO/Ic4Q3fq/lOjJORVCcLZefcrJw==} + /@octokit/types/9.0.0: + resolution: {integrity: sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==} + dependencies: + '@octokit/openapi-types': 16.0.0 + dev: true + + /@pnpm/network.ca-file/1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: true + + /@pnpm/npm-conf/1.0.5: + resolution: {integrity: sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==} + engines: {node: '>=12'} dependencies: - '@octokit/openapi-types': 13.12.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 dev: true - /@rushstack/node-core-library/3.51.2: - resolution: {integrity: sha512-DwK2Lo62sHCsg8VsVe/WfugiL1lC5YzmhwzdWr8jLsfOCl8DzcIdLm4Plz0bOCQj/9ItJX1QGXr2jK5xw1Kzwg==} + /@rollup/pluginutils/5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rushstack/node-core-library/3.55.1: + resolution: {integrity: sha512-t/nZHq4/4S3ltpYVyIsbbIqmcZx3qEe3Aaw8tI9B6XRNqCFzPxtoTopqTPTuRn8XqCtoDaSe6uMlnn7YCTu8lQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: - '@types/node': 12.20.24 colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.17.0 - semver: 7.3.7 - z-schema: 5.0.4 + resolve: 1.22.1 + semver: 7.3.8 + z-schema: 5.0.5 dev: true - /@rushstack/rig-package/0.3.15: - resolution: {integrity: sha512-jxVfvO5OnkRlYRhcVDZWvwiI2l4pv37HDJRtyg5HbD8Z/I8Xj32RICgrxS5xMeGGytobrg5S6OfPOHskg7Nw+A==} + /@rushstack/rig-package/0.3.17: + resolution: {integrity: sha512-nxvAGeIMnHl1LlZSQmacgcRV4y1EYtgcDIrw6KkeVjudOMonlxO482PhDj3LVZEp6L7emSf6YSO2s5JkHlwfZA==} dependencies: resolve: 1.17.0 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line/4.12.3: - resolution: {integrity: sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==} + /@rushstack/ts-command-line/4.13.1: + resolution: {integrity: sha512-UTQMRyy/jH1IS2U+6pyzyn9xQ2iMcoUKkTcZUzOP/aaMiKlWLwCTDiBVwhw/M1crDx6apF9CwyjuWO9r1SBdJQ==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -523,20 +956,20 @@ packages: string-argv: 0.3.1 dev: true - /@semantic-release/changelog/6.0.1_semantic-release@19.0.5: - resolution: {integrity: sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==} + /@semantic-release/changelog/6.0.2_semantic-release@20.1.0: + resolution: {integrity: sha512-jHqfTkoPbDEOAgAP18mGP53IxeMwxTISN+GwTRy9uLu58UjARoZU8ScCgWGeO2WPkEsm57H8AkyY02W2ntIlIw==} engines: {node: '>=14.17'} peerDependencies: semantic-release: '>=18.0.0' dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - fs-extra: 9.1.0 + fs-extra: 11.1.0 lodash: 4.17.21 - semantic-release: 19.0.5 + semantic-release: 20.1.0 dev: true - /@semantic-release/commit-analyzer/9.0.2_semantic-release@19.0.5: + /@semantic-release/commit-analyzer/9.0.2_semantic-release@20.1.0: resolution: {integrity: sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==} engines: {node: '>=14.17'} peerDependencies: @@ -549,7 +982,7 @@ packages: import-from: 4.0.0 lodash: 4.17.21 micromatch: 4.0.5 - semantic-release: 19.0.5 + semantic-release: 20.1.0 transitivePeerDependencies: - supports-color dev: true @@ -559,7 +992,7 @@ packages: engines: {node: '>=14.17'} dev: true - /@semantic-release/git/10.0.1_semantic-release@19.0.5: + /@semantic-release/git/10.0.1_semantic-release@20.1.0: resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} engines: {node: '>=14.17'} peerDependencies: @@ -573,24 +1006,24 @@ packages: lodash: 4.17.21 micromatch: 4.0.5 p-reduce: 2.1.0 - semantic-release: 19.0.5 + semantic-release: 20.1.0 transitivePeerDependencies: - supports-color dev: true - /@semantic-release/github/8.0.6_semantic-release@19.0.5: - resolution: {integrity: sha512-ZxgaxYCeqt9ylm2x3OPqUoUqBw1p60LhxzdX6BqJlIBThupGma98lttsAbK64T6L6AlNa2G5T66BbiG8y0PIHQ==} + /@semantic-release/github/8.0.7_semantic-release@20.1.0: + resolution: {integrity: sha512-VtgicRIKGvmTHwm//iqTh/5NGQwsncOMR5vQK9pMT92Aem7dv37JFKKRuulUsAnUOIlO4G8wH3gPiBAA0iW0ww==} engines: {node: '>=14.17'} peerDependencies: semantic-release: '>=18.0.0-beta.1' dependencies: - '@octokit/rest': 19.0.4 + '@octokit/rest': 19.0.7 '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 bottleneck: 2.19.5 debug: 4.3.4 dir-glob: 3.0.1 - fs-extra: 10.1.0 + fs-extra: 11.1.0 globby: 11.1.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -599,15 +1032,15 @@ packages: mime: 3.0.0 p-filter: 2.1.0 p-retry: 4.6.2 - semantic-release: 19.0.5 + semantic-release: 20.1.0 url-join: 4.0.1 transitivePeerDependencies: - encoding - supports-color dev: true - /@semantic-release/npm/9.0.1_semantic-release@19.0.5: - resolution: {integrity: sha512-I5nVZklxBzfMFwemhRNbSrkiN/dsH3c7K9+KSk6jUnq0rdLFUuJt7EBsysq4Ir3moajQgFkfEryEHPqiKJj20g==} + /@semantic-release/npm/9.0.2_semantic-release@20.1.0: + resolution: {integrity: sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==} engines: {node: '>=16 || ^14.17'} peerDependencies: semantic-release: '>=19.0.0' @@ -615,20 +1048,20 @@ packages: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 execa: 5.1.1 - fs-extra: 10.1.0 + fs-extra: 11.1.0 lodash: 4.17.21 nerf-dart: 1.0.0 normalize-url: 6.1.0 - npm: 8.19.2 + npm: 8.19.3 rc: 1.2.8 read-pkg: 5.2.0 - registry-auth-token: 4.2.2 - semantic-release: 19.0.5 - semver: 7.3.7 + registry-auth-token: 5.0.1 + semantic-release: 20.1.0 + semver: 7.3.8 tempy: 1.0.1 dev: true - /@semantic-release/release-notes-generator/10.0.3_semantic-release@19.0.5: + /@semantic-release/release-notes-generator/10.0.3_semantic-release@20.1.0: resolution: {integrity: sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==} engines: {node: '>=14.17'} peerDependencies: @@ -644,7 +1077,7 @@ packages: into-stream: 6.0.0 lodash: 4.17.21 read-pkg-up: 7.0.1 - semantic-release: 19.0.5 + semantic-release: 20.1.0 transitivePeerDependencies: - supports-color dev: true @@ -654,11 +1087,11 @@ packages: engines: {node: '>= 10'} dev: true - /@ts-morph/common/0.13.0: - resolution: {integrity: sha512-fEJ6j7Cu8yiWjA4UmybOBH9Efgb/64ZTWuvCF4KysGu4xz8ettfyaqFt8WZ1btCxXsGZJjZ2/3svOF6rL+UFdQ==} + /@ts-morph/common/0.18.1: + resolution: {integrity: sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==} dependencies: fast-glob: 3.2.12 - minimatch: 5.1.0 + minimatch: 5.1.6 mkdirp: 1.0.4 path-browserify: 1.0.1 dev: true @@ -686,11 +1119,15 @@ packages: /@types/chai-subset/1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.3 + '@types/chai': 4.3.4 + dev: true + + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/chai/4.3.3: - resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true /@types/hast/2.3.4: @@ -703,26 +1140,14 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/12.20.24: - resolution: {integrity: sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==} - dev: true - - /@types/node/14.18.29: - resolution: {integrity: sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==} - dev: true - - /@types/node/18.7.18: - resolution: {integrity: sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==} + /@types/node/18.11.19: + resolution: {integrity: sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==} dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json/4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true - /@types/parse5/6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: true @@ -735,8 +1160,40 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@types/web/0.0.73: - resolution: {integrity: sha512-1o7OcEirVd3qtdXzzPhPhTNfzAM27Hh9djTw3A1j4QOPjS5zxTH+H+PLnyrVFnrQ2EEb2TM5BZ/go4vutCaYpw==} + /@types/web/0.0.90: + resolution: {integrity: sha512-ow8CiNCDI8J5bwZQoFrDr/uqDCeLPOlaJixP7hZqoxoPWBcUXAwHhi+hvPiHTZk6YACoIPQXghxYEy8htXHwuw==} + dev: true + + /@vitest/expect/0.28.4: + resolution: {integrity: sha512-JqK0NZ4brjvOSL8hXAnIsfi+jxDF7rH/ZWCGCt0FAqRnVFc1hXsfwXksQvEnKqD84avRt3gmeXoK4tNbmkoVsQ==} + dependencies: + '@vitest/spy': 0.28.4 + '@vitest/utils': 0.28.4 + chai: 4.3.7 + dev: true + + /@vitest/runner/0.28.4: + resolution: {integrity: sha512-Q8UV6GjDvBSTfUoq0QXVCNpNOUrWu4P2qvRq7ssJWzn0+S0ojbVOxEjMt+8a32X6SdkhF8ak+2nkppsqV0JyNQ==} + dependencies: + '@vitest/utils': 0.28.4 + p-limit: 4.0.0 + pathe: 1.1.0 + dev: true + + /@vitest/spy/0.28.4: + resolution: {integrity: sha512-8WuhfXLlvCXpNXEGJW6Gc+IKWI32435fQJLh43u70HnZ1otJOa2Cmg2Wy2Aym47ZnNCP4NolF+8cUPwd0MigKQ==} + dependencies: + tinyspy: 1.0.2 + dev: true + + /@vitest/utils/0.28.4: + resolution: {integrity: sha512-l2QztOLdc2LkR+w/lP52RGh8hW+Ul4KESmCAgVE8q737I7e7bQoAfkARKpkPJ4JQtGpwW4deqlj1732VZD7TFw==} + dependencies: + cli-truncate: 3.1.0 + diff: 5.1.0 + loupe: 2.3.6 + picocolors: 1.0.0 + pretty-format: 27.5.1 dev: true /JSONStream/1.3.5: @@ -752,8 +1209,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn/8.8.0: - resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -775,6 +1232,14 @@ packages: indent-string: 4.0.0 dev: true + /aggregate-error/4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + dev: true + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -784,8 +1249,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -805,6 +1270,11 @@ packages: engines: {node: '>=8'} dev: true + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -819,6 +1289,16 @@ packages: color-convert: 2.0.1 dev: true + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles/6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /ansicolors/0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} dev: true @@ -833,6 +1313,10 @@ packages: sprintf-js: 1.0.3 dev: true + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + /argv-formatter/1.0.0: resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} dev: true @@ -855,11 +1339,6 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /at-least-node/1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: true - /bail/2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: true @@ -868,8 +1347,8 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /before-after-hook/2.2.2: - resolution: {integrity: sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==} + /before-after-hook/2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} dev: true /bottleneck/2.19.5: @@ -900,6 +1379,11 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -931,15 +1415,15 @@ packages: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: true - /chai/4.3.6: - resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} + /chai/4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.2 - deep-eql: 3.0.1 + deep-eql: 4.1.3 get-func-name: 2.0.0 - loupe: 2.3.4 + loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -961,8 +1445,8 @@ packages: supports-color: 7.2.0 dev: true - /chalk/5.0.1: - resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + /chalk/5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -983,6 +1467,13 @@ packages: engines: {node: '>=6'} dev: true + /clean-stack/4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true + /cli-table3/0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} @@ -992,8 +1483,17 @@ packages: '@colors/colors': 1.5.0 dev: true - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + /cli-truncate/3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: true + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 @@ -1030,12 +1530,13 @@ packages: engines: {node: '>=0.1.90'} dev: true - /comma-separated-tokens/2.0.2: - resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} + /comma-separated-tokens/2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: true - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /commander/9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} requiresBuild: true dev: true optional: true @@ -1048,7 +1549,14 @@ packages: dev: true /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 dev: true /conventional-changelog-angular/5.0.13: @@ -1097,8 +1605,8 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - is-text-path: 1.0.1 JSONStream: 1.3.5 + is-text-path: 1.0.1 lodash: 4.17.21 meow: 8.1.2 split2: 3.2.2 @@ -1109,8 +1617,8 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader/4.1.0_3owiowz3ujipd4k6pbqn3n7oui: - resolution: {integrity: sha512-HbWIuR5O+XO5Oj9SZ5bzgrD4nN+rfhrm2PMb0FVx+t+XIvC45n8F0oTNnztXtspWGw0i2IzHaUWFD5LzV1JB4A==} + /cosmiconfig-typescript-loader/4.3.0_q6dimmvgduffavfq3obt6abtea: + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' @@ -1118,21 +1626,20 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 14.18.29 - cosmiconfig: 7.0.1 - ts-node: 10.9.1_ck2axrxkiif44rdbzjywaqjysa - typescript: 4.8.3 + '@types/node': 18.11.19 + cosmiconfig: 8.0.0 + ts-node: 10.9.1_qqdszkrtcshgbphghj7vnvrrby + typescript: 4.9.5 dev: true - /cosmiconfig/7.0.1: - resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} - engines: {node: '>=10'} + /cosmiconfig/8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} dependencies: - '@types/parse-json': 4.0.0 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 dev: true /create-require/1.1.1: @@ -1174,8 +1681,8 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys/1.1.0: - resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + /decamelize-keys/1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 @@ -1187,9 +1694,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /deep-eql/3.0.1: - resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} - engines: {node: '>=0.12'} + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true @@ -1222,6 +1729,11 @@ packages: engines: {node: '>=0.3.1'} dev: true + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1242,16 +1754,23 @@ packages: readable-stream: 2.3.7 dev: true + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /env-ci/5.5.0: - resolution: {integrity: sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==} - engines: {node: '>=10.17'} + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /env-ci/8.0.0: + resolution: {integrity: sha512-W+3BqGZozFua9MPeXpmTm5eYEBtGgL76jGu/pwMVp/L8PdECSCEWaIp7d4Mw7kuUrbUldK0oV0bNd6ZZjLiMiA==} + engines: {node: ^16.10 || >=18} dependencies: - execa: 5.1.1 - fromentries: 1.3.2 + execa: 6.1.0 java-properties: 1.0.2 dev: true @@ -1261,19 +1780,17 @@ packages: is-arrayish: 0.2.1 dev: true - /esbuild-android-64/0.15.8: - resolution: {integrity: sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==} + /esbuild-android-64/0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true - dependencies: - esbuild-wasm: 0.15.8 dev: true optional: true - /esbuild-android-arm64/0.15.8: - resolution: {integrity: sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==} + /esbuild-android-arm64/0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1281,8 +1798,8 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.15.8: - resolution: {integrity: sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==} + /esbuild-darwin-64/0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1290,8 +1807,8 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.15.8: - resolution: {integrity: sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==} + /esbuild-darwin-arm64/0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1299,8 +1816,8 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.15.8: - resolution: {integrity: sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==} + /esbuild-freebsd-64/0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1308,8 +1825,8 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.15.8: - resolution: {integrity: sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==} + /esbuild-freebsd-arm64/0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1317,8 +1834,8 @@ packages: dev: true optional: true - /esbuild-linux-32/0.15.8: - resolution: {integrity: sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==} + /esbuild-linux-32/0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1326,8 +1843,8 @@ packages: dev: true optional: true - /esbuild-linux-64/0.15.8: - resolution: {integrity: sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==} + /esbuild-linux-64/0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1335,8 +1852,8 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.15.8: - resolution: {integrity: sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==} + /esbuild-linux-arm/0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1344,8 +1861,8 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.15.8: - resolution: {integrity: sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==} + /esbuild-linux-arm64/0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1353,8 +1870,8 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.15.8: - resolution: {integrity: sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==} + /esbuild-linux-mips64le/0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1362,8 +1879,8 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.15.8: - resolution: {integrity: sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==} + /esbuild-linux-ppc64le/0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1371,8 +1888,8 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.15.8: - resolution: {integrity: sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==} + /esbuild-linux-riscv64/0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1380,8 +1897,8 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.15.8: - resolution: {integrity: sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==} + /esbuild-linux-s390x/0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1389,8 +1906,8 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.15.8: - resolution: {integrity: sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==} + /esbuild-netbsd-64/0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1398,8 +1915,8 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.15.8: - resolution: {integrity: sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==} + /esbuild-openbsd-64/0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1407,8 +1924,8 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.15.8: - resolution: {integrity: sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==} + /esbuild-sunos-64/0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1416,16 +1933,8 @@ packages: dev: true optional: true - /esbuild-wasm/0.15.8: - resolution: {integrity: sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.15.8: - resolution: {integrity: sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==} + /esbuild-windows-32/0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1433,8 +1942,8 @@ packages: dev: true optional: true - /esbuild-windows-64/0.15.8: - resolution: {integrity: sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==} + /esbuild-windows-64/0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1442,8 +1951,8 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.15.8: - resolution: {integrity: sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==} + /esbuild-windows-arm64/0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1451,34 +1960,94 @@ packages: dev: true optional: true - /esbuild/0.15.8: - resolution: {integrity: sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==} + /esbuild/0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /esbuild/0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.15.8 - '@esbuild/linux-loong64': 0.15.8 - esbuild-android-64: 0.15.8 - esbuild-android-arm64: 0.15.8 - esbuild-darwin-64: 0.15.8 - esbuild-darwin-arm64: 0.15.8 - esbuild-freebsd-64: 0.15.8 - esbuild-freebsd-arm64: 0.15.8 - esbuild-linux-32: 0.15.8 - esbuild-linux-64: 0.15.8 - esbuild-linux-arm: 0.15.8 - esbuild-linux-arm64: 0.15.8 - esbuild-linux-mips64le: 0.15.8 - esbuild-linux-ppc64le: 0.15.8 - esbuild-linux-riscv64: 0.15.8 - esbuild-linux-s390x: 0.15.8 - esbuild-netbsd-64: 0.15.8 - esbuild-openbsd-64: 0.15.8 - esbuild-sunos-64: 0.15.8 - esbuild-windows-32: 0.15.8 - esbuild-windows-64: 0.15.8 - esbuild-windows-arm64: 0.15.8 + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + dev: true + + /esbuild/0.17.6: + resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.6 + '@esbuild/android-arm64': 0.17.6 + '@esbuild/android-x64': 0.17.6 + '@esbuild/darwin-arm64': 0.17.6 + '@esbuild/darwin-x64': 0.17.6 + '@esbuild/freebsd-arm64': 0.17.6 + '@esbuild/freebsd-x64': 0.17.6 + '@esbuild/linux-arm': 0.17.6 + '@esbuild/linux-arm64': 0.17.6 + '@esbuild/linux-ia32': 0.17.6 + '@esbuild/linux-loong64': 0.17.6 + '@esbuild/linux-mips64el': 0.17.6 + '@esbuild/linux-ppc64': 0.17.6 + '@esbuild/linux-riscv64': 0.17.6 + '@esbuild/linux-s390x': 0.17.6 + '@esbuild/linux-x64': 0.17.6 + '@esbuild/netbsd-x64': 0.17.6 + '@esbuild/openbsd-x64': 0.17.6 + '@esbuild/sunos-x64': 0.17.6 + '@esbuild/win32-arm64': 0.17.6 + '@esbuild/win32-ia32': 0.17.6 + '@esbuild/win32-x64': 0.17.6 dev: true /escalade/3.1.1: @@ -1491,11 +2060,16 @@ packages: engines: {node: '>=0.8.0'} dev: true + /escape-string-regexp/5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + /esno/0.16.3: resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} hasBin: true dependencies: - tsx: 3.9.0 + tsx: 3.12.3 dev: true /esprima/4.0.1: @@ -1504,6 +2078,10 @@ packages: hasBin: true dev: true + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + /execa/5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -1519,6 +2097,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa/6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /extend/3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -1542,8 +2135,8 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true @@ -1555,11 +2148,12 @@ packages: escape-string-regexp: 1.0.5 dev: true - /figures/3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + /figures/5.0.0: + resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + engines: {node: '>=14'} dependencies: - escape-string-regexp: 1.0.5 + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 dev: true /fill-range/7.0.1: @@ -1592,11 +2186,19 @@ packages: path-exists: 4.0.0 dev: true - /find-versions/4.0.0: - resolution: {integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==} - engines: {node: '>=10'} + /find-up/6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.1.1 + path-exists: 5.0.0 + dev: true + + /find-versions/5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} dependencies: - semver-regex: 3.1.4 + semver-regex: 4.0.5 dev: true /from2/2.3.0: @@ -1606,10 +2208,6 @@ packages: readable-stream: 2.3.7 dev: true - /fromentries/1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - dev: true - /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -1619,6 +2217,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra/11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1628,16 +2235,6 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1672,8 +2269,8 @@ packages: engines: {node: '>=10'} dev: true - /get-tsconfig/4.2.0: - resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} dev: true /git-log-parser/1.2.0: @@ -1684,7 +2281,7 @@ packages: split2: 1.0.0 stream-combiner2: 1.1.1 through2: 2.0.5 - traverse: 0.6.6 + traverse: 0.6.7 dev: true /git-raw-commits/2.0.11: @@ -1699,8 +2296,8 @@ packages: through2: 4.0.2 dev: true - /github-slugger/1.4.0: - resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} + /github-slugger/2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} dev: true /glob-parent/5.1.2: @@ -1735,7 +2332,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -1749,12 +2346,12 @@ packages: engines: {node: '>=0.4.7'} hasBin: true dependencies: - minimist: 1.2.6 + minimist: 1.2.7 neo-async: 2.6.2 source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.0 + uglify-js: 3.17.4 dev: true /hard-rejection/2.1.0: @@ -1779,15 +2376,14 @@ packages: function-bind: 1.1.1 dev: true - /hast-util-from-parse5/7.1.0: - resolution: {integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==} + /hast-util-from-parse5/7.1.1: + resolution: {integrity: sha512-R6PoNcUs89ZxLJmMWsVbwSWuz95/9OriyQZ3e2ybwqGsRXzhA6gv49rgGmQvLbZuSNDv9fCg7vV7gXUsvtUFaA==} dependencies: '@types/hast': 2.3.4 - '@types/parse5': 6.0.3 '@types/unist': 2.0.6 - hastscript: 7.0.2 - property-information: 6.1.1 - vfile: 5.3.5 + hastscript: 7.2.0 + property-information: 6.2.0 + vfile: 5.3.6 vfile-location: 4.0.1 web-namespaces: 2.0.1 dev: true @@ -1796,12 +2392,12 @@ packages: resolution: {integrity: sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==} dev: true - /hast-util-has-property/2.0.0: - resolution: {integrity: sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==} + /hast-util-has-property/2.0.1: + resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} dev: true - /hast-util-heading-rank/2.1.0: - resolution: {integrity: sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==} + /hast-util-heading-rank/2.1.1: + resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} dependencies: '@types/hast': 2.3.4 dev: true @@ -1810,32 +2406,53 @@ packages: resolution: {integrity: sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==} dev: true - /hast-util-is-element/2.1.2: - resolution: {integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==} + /hast-util-parse-selector/3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: '@types/hast': 2.3.4 - '@types/unist': 2.0.6 dev: true - /hast-util-parse-selector/3.1.0: - resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} + /hast-util-raw/7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} dependencies: '@types/hast': 2.3.4 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.1 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.6 + web-namespaces: 2.0.1 + zwitch: 2.0.4 dev: true - /hast-util-to-html/8.0.3: - resolution: {integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==} + /hast-util-to-html/8.0.4: + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} dependencies: '@types/hast': 2.3.4 + '@types/unist': 2.0.6 ccount: 2.0.1 - comma-separated-tokens: 2.0.2 - hast-util-is-element: 2.1.2 - hast-util-whitespace: 2.0.0 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 html-void-elements: 2.0.1 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 - unist-util-is: 5.1.1 + zwitch: 2.0.4 + dev: true + + /hast-util-to-parse5/7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + dependencies: + '@types/hast': 2.3.4 + comma-separated-tokens: 2.0.3 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 dev: true /hast-util-to-string/2.0.0: @@ -1844,23 +2461,23 @@ packages: '@types/hast': 2.3.4 dev: true - /hast-util-whitespace/2.0.0: - resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} + /hast-util-whitespace/2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} dev: true - /hastscript/7.0.2: - resolution: {integrity: sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==} + /hastscript/7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: '@types/hast': 2.3.4 - comma-separated-tokens: 2.0.2 - hast-util-parse-selector: 3.1.0 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 dev: true - /hook-std/2.0.0: - resolution: {integrity: sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==} - engines: {node: '>=8'} + /hook-std/3.0.0: + resolution: {integrity: sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /hosted-git-info/2.8.9: @@ -1874,6 +2491,13 @@ packages: lru-cache: 6.0.0 dev: true + /hosted-git-info/6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + lru-cache: 7.14.1 + dev: true + /html-void-elements/2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} dev: true @@ -1904,14 +2528,19 @@ packages: engines: {node: '>=10.17.0'} dev: true - /husky/8.0.1: - resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==} + /human-signals/3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + dev: true + + /husky/8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /ignore/5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true @@ -1938,6 +2567,11 @@ packages: engines: {node: '>=8'} dev: true + /indent-string/5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: true + /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -1979,8 +2613,8 @@ packages: engines: {node: '>=4'} dev: true - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: true @@ -1995,6 +2629,11 @@ packages: engines: {node: '>=8'} dev: true + /is-fullwidth-code-point/4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2042,6 +2681,11 @@ packages: engines: {node: '>=8'} dev: true + /is-stream/3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-text-path/1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} @@ -2049,6 +2693,11 @@ packages: text-extensions: 1.9.0 dev: true + /is-unicode-supported/1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + dev: true + /isarray/1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true @@ -2081,6 +2730,13 @@ packages: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + /json-parse-better-errors/1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true @@ -2129,6 +2785,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /kolorist/1.7.0: + resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} + dev: true + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true @@ -2143,8 +2803,8 @@ packages: strip-bom: 3.0.0 dev: true - /local-pkg/0.4.2: - resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + /local-pkg/0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true @@ -2170,6 +2830,21 @@ packages: p-locate: 5.0.0 dev: true + /locate-path/7.1.1: + resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash-es/4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: true + + /lodash.camelcase/4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + /lodash.capitalize/4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} dev: true @@ -2186,6 +2861,10 @@ packages: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: true + /lodash.isfunction/3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + dev: true + /lodash.ismatch/4.4.0: resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} dev: true @@ -2198,16 +2877,44 @@ packages: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} dev: true + /lodash.kebabcase/4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.mergewith/4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.snakecase/4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.startcase/4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + /lodash.uniqby/4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} dev: true + /lodash.upperfirst/4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /loupe/2.3.4: - resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true @@ -2219,6 +2926,11 @@ packages: yallist: 4.0.0 dev: true + /lru-cache/7.14.1: + resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==} + engines: {node: '>=12'} + dev: true + /lunr/2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true @@ -2237,7 +2949,7 @@ packages: engines: {node: '>=8'} dev: true - /marked-terminal/5.1.1_marked@4.1.0: + /marked-terminal/5.1.1_marked@4.2.12: resolution: {integrity: sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==} engines: {node: '>=14.13.1 || >=16.0.0'} peerDependencies: @@ -2245,15 +2957,15 @@ packages: dependencies: ansi-escapes: 5.0.0 cardinal: 2.1.1 - chalk: 5.0.1 + chalk: 5.2.0 cli-table3: 0.6.3 - marked: 4.1.0 + marked: 4.2.12 node-emoji: 1.11.0 supports-hyperlinks: 2.3.0 dev: true - /marked/4.1.0: - resolution: {integrity: sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==} + /marked/4.2.12: + resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} engines: {node: '>= 12'} hasBin: true dev: true @@ -2264,7 +2976,7 @@ packages: dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 + decamelize-keys: 1.1.1 hard-rejection: 2.1.0 minimist-options: 4.1.0 normalize-package-data: 3.0.3 @@ -2303,6 +3015,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn/4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /min-indent/1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2314,8 +3031,8 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch/5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -2330,8 +3047,8 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true /mkdirp/1.0.4: @@ -2340,6 +3057,15 @@ packages: hasBin: true dev: true + /mlly/1.1.0: + resolution: {integrity: sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==} + dependencies: + acorn: 8.8.2 + pathe: 1.1.0 + pkg-types: 1.0.1 + ufo: 1.0.1 + dev: true + /modify-values/1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} @@ -2369,8 +3095,8 @@ packages: lodash: 4.17.21 dev: true - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch/2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -2395,8 +3121,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.10.0 - semver: 7.3.7 + is-core-module: 2.11.0 + semver: 7.3.8 validate-npm-package-license: 3.0.4 dev: true @@ -2412,9 +3138,16 @@ packages: path-key: 3.1.1 dev: true - /npm/8.19.2: - resolution: {integrity: sha512-MWkISVv5f7iZbfNkry5/5YBqSYJEDAKSJdL+uzSQuyLg+hgLQUyZynu3SH6bOZlvR9ZvJYk2EiJO6B1r+ynwHg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16} + /npm-run-path/5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /npm/8.19.3: + resolution: {integrity: sha512-0QjmyPtDxSyMWWD8I91QGbrgx9KzbV6C9FK1liEb/K0zppiZkr5KxXc990G+LzPwBHDfRjUBlO9T1qZ08vl9mA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true dev: true bundledDependencies: @@ -2425,7 +3158,6 @@ packages: - '@npmcli/fs' - '@npmcli/map-workspaces' - '@npmcli/package-json' - - '@npmcli/promise-spawn' - '@npmcli/run-script' - abbrev - archy @@ -2506,9 +3238,16 @@ packages: mimic-fn: 2.1.0 dev: true - /p-each-series/2.2.0: - resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} - engines: {node: '>=8'} + /onetime/6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /p-each-series/3.0.0: + resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} + engines: {node: '>=12'} dev: true /p-filter/2.1.0: @@ -2544,6 +3283,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate/2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} @@ -2565,6 +3311,13 @@ packages: p-limit: 3.1.0 dev: true + /p-locate/6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + /p-map/2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -2582,6 +3335,11 @@ packages: engines: {node: '>=8'} dev: true + /p-reduce/3.0.0: + resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} + engines: {node: '>=12'} + dev: true + /p-retry/4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -2643,6 +3401,11 @@ packages: engines: {node: '>=8'} dev: true + /path-exists/5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -2653,6 +3416,11 @@ packages: engines: {node: '>=8'} dev: true + /path-key/4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -2662,6 +3430,10 @@ packages: engines: {node: '>=8'} dev: true + /pathe/1.1.0: + resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} + dev: true + /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -2688,14 +3460,22 @@ packages: load-json-file: 4.0.0 dev: true - /pnpm/7.12.0: - resolution: {integrity: sha512-Zc38WaMNkomazbIFl5nq2TR1e97R4iG+G7f9QKUL+YHbHOnkOYV3UuR45xYPhhpn1ArLfTpxjxmRu1H3gn6SPw==} + /pkg-types/1.0.1: + resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.1.0 + pathe: 1.1.0 + dev: true + + /pnpm/7.26.3: + resolution: {integrity: sha512-Q/McJBmWoVmHMn5Nzf8Ty3gCPeOqq4fFbIP07Cg4Ygkvk01yu9LdXagydEHuvYIq0c/yU9+7EKeppUuuw1OX6Q==} engines: {node: '>=14.6'} hasBin: true dev: true - /postcss/8.4.16: - resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -2703,16 +3483,29 @@ packages: source-map-js: 1.0.2 dev: true + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /property-information/6.1.1: - resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} + /property-information/6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + dev: true + + /proto-list/1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true @@ -2736,10 +3529,14 @@ packages: dependencies: deep-extend: 0.6.0 ini: 1.3.8 - minimist: 1.2.6 + minimist: 1.2.7 strip-json-comments: 2.0.1 dev: true + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -2749,6 +3546,15 @@ packages: type-fest: 0.8.1 dev: true + /read-pkg-up/9.1.0: + resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + find-up: 6.3.0 + read-pkg: 7.1.0 + type-fest: 2.19.0 + dev: true + /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -2759,6 +3565,16 @@ packages: type-fest: 0.6.0 dev: true + /read-pkg/7.1.0: + resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} + engines: {node: '>=12.20'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 3.0.3 + parse-json: 5.2.0 + type-fest: 2.19.0 + dev: true + /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -2794,11 +3610,11 @@ packages: esprima: 4.0.1 dev: true - /registry-auth-token/4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} + /registry-auth-token/5.0.1: + resolution: {integrity: sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==} + engines: {node: '>=14'} dependencies: - rc: 1.2.8 + '@pnpm/npm-conf': 1.0.5 dev: true /rehype-accessible-emojis/0.3.2: @@ -2816,37 +3632,37 @@ packages: '@types/hast': 2.3.4 extend: 3.0.2 is-absolute-url: 4.0.1 - space-separated-tokens: 2.0.1 + space-separated-tokens: 2.0.2 unified: 10.1.2 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: true /rehype-parse/8.0.4: resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} dependencies: '@types/hast': 2.3.4 - hast-util-from-parse5: 7.1.0 + hast-util-from-parse5: 7.1.1 parse5: 6.0.1 unified: 10.1.2 dev: true - /rehype-slug/5.0.1: - resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} + /rehype-slug/5.1.0: + resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==} dependencies: '@types/hast': 2.3.4 - github-slugger: 1.4.0 - hast-util-has-property: 2.0.0 - hast-util-heading-rank: 2.1.0 + github-slugger: 2.0.0 + hast-util-has-property: 2.0.1 + hast-util-heading-rank: 2.1.1 hast-util-to-string: 2.0.0 unified: 10.1.2 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: true /rehype-stringify/9.0.3: resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==} dependencies: '@types/hast': 2.3.4 - hast-util-to-html: 8.0.3 + hast-util-to-html: 8.0.4 unified: 10.1.2 dev: true @@ -2894,7 +3710,7 @@ packages: /resolve/1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.10.0 + is-core-module: 2.11.0 path-parse: 1.0.7 dev: true @@ -2902,7 +3718,7 @@ packages: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.10.0 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -2924,9 +3740,9 @@ packages: glob: 7.2.3 dev: true - /rollup/2.78.1: - resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} - engines: {node: '>=10.0.0'} + /rollup/3.14.0: + resolution: {integrity: sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 @@ -2946,54 +3762,54 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /semantic-release/19.0.5: - resolution: {integrity: sha512-NMPKdfpXTnPn49FDogMBi36SiBfXkSOJqCkk0E4iWOY1tusvvgBwqUmxTX1kmlT6kIYed9YwNKD1sfPpqa5yaA==} - engines: {node: '>=16 || ^14.17'} + /semantic-release/20.1.0: + resolution: {integrity: sha512-+9+n6RIr0Fz0F53cXrjpawxWlUg3O7/qr1jF9lrE+/v6WqwBrSWnavVHTPaf2WLerET2EngoqI0M4pahkKl6XQ==} + engines: {node: '>=18'} hasBin: true dependencies: - '@semantic-release/commit-analyzer': 9.0.2_semantic-release@19.0.5 + '@semantic-release/commit-analyzer': 9.0.2_semantic-release@20.1.0 '@semantic-release/error': 3.0.0 - '@semantic-release/github': 8.0.6_semantic-release@19.0.5 - '@semantic-release/npm': 9.0.1_semantic-release@19.0.5 - '@semantic-release/release-notes-generator': 10.0.3_semantic-release@19.0.5 - aggregate-error: 3.1.0 - cosmiconfig: 7.0.1 + '@semantic-release/github': 8.0.7_semantic-release@20.1.0 + '@semantic-release/npm': 9.0.2_semantic-release@20.1.0 + '@semantic-release/release-notes-generator': 10.0.3_semantic-release@20.1.0 + aggregate-error: 4.0.1 + cosmiconfig: 8.0.0 debug: 4.3.4 - env-ci: 5.5.0 - execa: 5.1.1 - figures: 3.2.0 - find-versions: 4.0.0 + env-ci: 8.0.0 + execa: 6.1.0 + figures: 5.0.0 + find-versions: 5.1.0 get-stream: 6.0.1 git-log-parser: 1.2.0 - hook-std: 2.0.0 - hosted-git-info: 4.1.0 - lodash: 4.17.21 - marked: 4.1.0 - marked-terminal: 5.1.1_marked@4.1.0 + hook-std: 3.0.0 + hosted-git-info: 6.1.1 + lodash-es: 4.17.21 + marked: 4.2.12 + marked-terminal: 5.1.1_marked@4.2.12 micromatch: 4.0.5 - p-each-series: 2.2.0 - p-reduce: 2.1.0 - read-pkg-up: 7.0.1 + p-each-series: 3.0.0 + p-reduce: 3.0.0 + read-pkg-up: 9.1.0 resolve-from: 5.0.0 - semver: 7.3.7 - semver-diff: 3.1.1 + semver: 7.3.8 + semver-diff: 4.0.0 signale: 1.4.0 - yargs: 16.2.0 + yargs: 17.6.2 transitivePeerDependencies: - encoding - supports-color dev: true - /semver-diff/3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} + /semver-diff/4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} dependencies: - semver: 6.3.0 + semver: 7.3.8 dev: true - /semver-regex/3.1.4: - resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==} - engines: {node: '>=8'} + /semver-regex/4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} dev: true /semver/5.7.1: @@ -3006,8 +3822,8 @@ packages: hasBin: true dev: true - /semver/7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: @@ -3026,12 +3842,16 @@ packages: engines: {node: '>=8'} dev: true - /shiki/0.11.1: - resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + /shiki/0.12.1: + resolution: {integrity: sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==} dependencies: jsonc-parser: 3.2.0 - vscode-oniguruma: 1.6.2 - vscode-textmate: 6.0.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /siginfo/2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true /signal-exit/3.0.7: @@ -3052,6 +3872,14 @@ packages: engines: {node: '>=8'} dev: true + /slice-ansi/5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -3069,8 +3897,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /space-separated-tokens/2.0.1: - resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} + /space-separated-tokens/2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: true /spawn-error-forwarder/1.0.0: @@ -3121,6 +3949,14 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true + /stackback/0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env/3.3.2: + resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} + dev: true + /stdopt/2.2.0: resolution: {integrity: sha512-D/p41NgXOkcj1SeGhfXOwv9z1K6EV3sjAUY5aeepVbgEHv7DpKWLTjhjScyzMWAQCAgUQys1mjH0eArm4cjRGw==} dependencies: @@ -3148,6 +3984,15 @@ packages: strip-ansi: 6.0.1 dev: true + /string-width/5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + dev: true + /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -3174,6 +4019,13 @@ packages: ansi-regex: 5.0.1 dev: true + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -3184,6 +4036,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline/3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -3201,10 +4058,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal/0.4.2: - resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} + /strip-literal/1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: - acorn: 8.8.0 + acorn: 8.8.2 dev: true /supports-color/5.5.0: @@ -3272,12 +4129,12 @@ packages: readable-stream: 3.6.0 dev: true - /tinybench/2.1.5: - resolution: {integrity: sha512-ak+PZZEuH3mw6CCFOgf5S90YH0MARnZNhxjhjguAmoJimEMAJuNip/rJRd6/wyylHItomVpKTzZk9zrhTrQCoQ==} + /tinybench/2.3.1: + resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} dev: true - /tinypool/0.3.0: - resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} + /tinypool/0.3.1: + resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} engines: {node: '>=14.0.0'} dev: true @@ -3297,8 +4154,8 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /traverse/0.6.6: - resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} + /traverse/0.6.7: + resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} dev: true /trim-newlines/3.0.1: @@ -3310,14 +4167,14 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true - /ts-morph/14.0.0: - resolution: {integrity: sha512-tO8YQ1dP41fw8GVmeQAdNsD8roZi1JMqB7YwZrqU856DvmG5/710e41q2XauzTYrygH9XmMryaFeLo+kdCziyA==} + /ts-morph/17.0.1: + resolution: {integrity: sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==} dependencies: - '@ts-morph/common': 0.13.0 + '@ts-morph/common': 0.18.1 code-block-writer: 11.0.3 dev: true - /ts-node/10.9.1_ck2axrxkiif44rdbzjywaqjysa: + /ts-node/10.9.1_qqdszkrtcshgbphghj7vnvrrby: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -3336,25 +4193,25 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 14.18.29 - acorn: 8.8.0 + '@types/node': 18.11.19 + acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.8.3 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsx/3.9.0: - resolution: {integrity: sha512-ofxsE+qjqCYYq4UBt5khglvb+ESgxef1YpuNcdQI92kvcAT2tZVrnSK3g4bRXTUhLmKHcC5q8vIZA47os/stng==} + /tsx/3.12.3: + resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.3.3 - '@esbuild-kit/core-utils': 2.3.1 - '@esbuild-kit/esm-loader': 2.4.2 + '@esbuild-kit/cjs-loader': 2.4.2 + '@esbuild-kit/core-utils': 3.0.0 + '@esbuild-kit/esm-loader': 2.5.5 optionalDependencies: fsevents: 2.3.2 dev: true @@ -3389,59 +4246,68 @@ packages: engines: {node: '>=10'} dev: true - /typedoc-plugin-extras/2.3.0_typedoc@0.23.15: - resolution: {integrity: sha512-XjzutqICAkSpl1vhyloYfd35mn0U6WwOQ7BttRkwGhmBQs/qFLz2K+AU0/lj2Cx4WY6AqVr4c/PzFbqI4fACqw==} + /type-fest/2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: true + + /typedoc-plugin-extras/2.3.2_typedoc@0.23.24: + resolution: {integrity: sha512-g2m8UuGgaD5lNKO6f1p3atEugtTEb/le8IYkAiksmGYZyyF44SvRe8NcaJLq61mC+XRHHszQ664v3Vw9avIrMw==} peerDependencies: typedoc: 0.23.x dependencies: - typedoc: 0.23.15_typescript@4.8.3 + typedoc: 0.23.24_typescript@4.9.5 dev: true - /typedoc-plugin-inline-sources/1.0.1_typedoc@0.23.15: + /typedoc-plugin-inline-sources/1.0.1_typedoc@0.23.24: resolution: {integrity: sha512-UB2pyxARGP1bG5RFm2e3dUAjuFWPBqZUcH4DWk+or+8S7fgWwskzG/4rDeTgqL6IDkfyo+PFSuYCSeBDqfWolA==} engines: {node: '>= 10.8.0'} peerDependencies: typedoc: '>=0.22.0' dependencies: - typedoc: 0.23.15_typescript@4.8.3 + typedoc: 0.23.24_typescript@4.9.5 dev: true - /typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.15: - resolution: {integrity: sha512-IGLuelXPOenGdmklr5DHgPPf/MfZj7aEYCxCMtPN8C1D0lA7w0YLahd0jhDDcOMU7zL1EPcM5pPnhZHltDhqGQ==} + /typedoc-plugin-mdn-links/2.0.2_typedoc@0.23.24: + resolution: {integrity: sha512-Fzjvfsj3rxvmZNqWRvq9JTGBkOkrPp0kBtvJCJ4U5Jm14OF1KoRErtmwgVQcPLA5Xs8h5I/W4uZBaL8SDHsgxQ==} peerDependencies: typedoc: 0.22.x || 0.23.x dependencies: - typedoc: 0.23.15_typescript@4.8.3 + typedoc: 0.23.24_typescript@4.9.5 dev: true - /typedoc/0.23.15_typescript@4.8.3: - resolution: {integrity: sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==} + /typedoc/0.23.24_typescript@4.9.5: + resolution: {integrity: sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x dependencies: lunr: 2.3.9 - marked: 4.1.0 - minimatch: 5.1.0 - shiki: 0.11.1 - typescript: 4.8.3 + marked: 4.2.12 + minimatch: 5.1.6 + shiki: 0.12.1 + typescript: 4.9.5 dev: true - /typescript/4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + /typescript/4.8.4: + resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript/4.8.3: - resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /uglify-js/3.17.0: - resolution: {integrity: sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==} + /ufo/1.0.1: + resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} + dev: true + + /uglify-js/3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -3457,7 +4323,7 @@ packages: is-buffer: 2.0.5 is-plain-obj: 4.1.0 trough: 2.1.0 - vfile: 5.3.5 + vfile: 5.3.6 dev: true /unique-string/2.0.0: @@ -3475,12 +4341,18 @@ packages: resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} dev: true - /unist-util-is/5.1.1: - resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} + /unist-util-is/5.2.0: + resolution: {integrity: sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==} dev: true - /unist-util-stringify-position/3.0.2: - resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} + /unist-util-position/4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-stringify-position/3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: '@types/unist': 2.0.6 dev: true @@ -3491,11 +4363,11 @@ packages: unist-util-is: 3.0.0 dev: true - /unist-util-visit-parents/5.1.1: - resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} + /unist-util-visit-parents/5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: '@types/unist': 2.0.6 - unist-util-is: 5.1.1 + unist-util-is: 5.2.0 dev: true /unist-util-visit/1.4.1: @@ -3504,12 +4376,12 @@ packages: unist-util-visit-parents: 2.1.2 dev: true - /unist-util-visit/4.1.1: - resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} + /unist-util-visit/4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 + unist-util-is: 5.2.0 + unist-util-visit-parents: 5.1.3 dev: true /universal-user-agent/6.0.0: @@ -3529,7 +4401,7 @@ packages: /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true /url-join/4.0.1: @@ -3551,8 +4423,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validator/13.7.0: - resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} + /validator/13.9.0: + resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} engines: {node: '>= 0.10'} dev: true @@ -3560,72 +4432,138 @@ packages: resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} dependencies: '@types/unist': 2.0.6 - vfile: 5.3.5 + vfile: 5.3.6 dev: true - /vfile-message/3.1.2: - resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} + /vfile-message/3.1.3: + resolution: {integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==} dependencies: '@types/unist': 2.0.6 - unist-util-stringify-position: 3.0.2 + unist-util-stringify-position: 3.0.3 dev: true - /vfile/5.3.5: - resolution: {integrity: sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==} + /vfile/5.3.6: + resolution: {integrity: sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==} dependencies: '@types/unist': 2.0.6 is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.3 + dev: true + + /vite-node/0.28.4_@types+node@18.11.19: + resolution: {integrity: sha512-KM0Q0uSG/xHHKOJvVHc5xDBabgt0l70y7/lWTR7Q0pR5/MrYxadT+y32cJOE65FfjGmJgxpVEEY+69btJgcXOQ==} + engines: {node: '>=v14.16.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.1.0 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.1.1_@types+node@18.11.19 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser dev: true - /vite-plugin-dts/1.5.0_vite@3.1.3: - resolution: {integrity: sha512-O78YnwomiEu+vKMdj1gvJfi2PnSOdB/RKWSOaNDjzr5bGvB6G7AskSczy+74sLwj3hkh0qO0L0U1UuLSjAqtqA==} - engines: {node: '>=12.0.0'} + /vite-plugin-dts/1.7.2_vite@4.1.1: + resolution: {integrity: sha512-55Jwfv6n8gAlRSVGCpIY13TCqadtaKex9d2mCbaSxMFAU06suMDsFhIch1x55eptpC2RpeiresqbTjhN2HSEtQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: '>=2.4.4' + vite: '>=2.9.0' dependencies: - '@microsoft/api-extractor': 7.31.1 - '@rushstack/node-core-library': 3.51.2 - chalk: 4.1.2 + '@microsoft/api-extractor': 7.34.3 + '@rollup/pluginutils': 5.0.2 + '@rushstack/node-core-library': 3.55.1 debug: 4.3.4 fast-glob: 3.2.12 fs-extra: 10.1.0 - ts-morph: 14.0.0 - vite: 3.1.3 + kolorist: 1.7.0 + ts-morph: 17.0.1 + vite: 4.1.1 transitivePeerDependencies: + - '@types/node' + - rollup - supports-color dev: true - /vite/3.1.3: - resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} + /vite/4.1.1: + resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.14.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vite/4.1.1_@types+node@18.11.19: + resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: + '@types/node': '>= 14' less: '*' sass: '*' stylus: '*' + sugarss: '*' terser: ^5.4.0 peerDependenciesMeta: + '@types/node': + optional: true less: optional: true sass: optional: true stylus: optional: true + sugarss: + optional: true terser: optional: true dependencies: - esbuild: 0.15.8 - postcss: 8.4.16 + '@types/node': 18.11.19 + esbuild: 0.16.17 + postcss: 8.4.21 resolve: 1.22.1 - rollup: 2.78.1 + rollup: 3.14.0 optionalDependencies: fsevents: 2.3.2 dev: true - /vitest/0.23.4: - resolution: {integrity: sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==} + /vitest/0.28.4: + resolution: {integrity: sha512-sfWIy0AdlbyGRhunm+TLQEJrFH9XuRPdApfubsyLcDbCRrUX717BRQKInTgzEfyl2Ipi1HWoHB84Nqtcwxogcg==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: @@ -3646,31 +4584,45 @@ packages: jsdom: optional: true dependencies: - '@types/chai': 4.3.3 + '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.7.18 - chai: 4.3.6 + '@types/node': 18.11.19 + '@vitest/expect': 0.28.4 + '@vitest/runner': 0.28.4 + '@vitest/spy': 0.28.4 + '@vitest/utils': 0.28.4 + acorn: 8.8.2 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 debug: 4.3.4 - local-pkg: 0.4.2 - strip-literal: 0.4.2 - tinybench: 2.1.5 - tinypool: 0.3.0 + local-pkg: 0.4.3 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + std-env: 3.3.2 + strip-literal: 1.0.1 + tinybench: 2.3.1 + tinypool: 0.3.1 tinyspy: 1.0.2 - vite: 3.1.3 + vite: 4.1.1_@types+node@18.11.19 + vite-node: 0.28.4_@types+node@18.11.19 + why-is-node-running: 2.2.2 transitivePeerDependencies: - less - sass - stylus + - sugarss - supports-color - terser dev: true - /vscode-oniguruma/1.6.2: - resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} + /vscode-oniguruma/1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true - /vscode-textmate/6.0.0: - resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + /vscode-textmate/8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true /web-namespaces/2.0.1: @@ -3696,6 +4648,15 @@ packages: isexe: 2.0.0 dev: true + /why-is-node-running/2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /wordwrap/1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true @@ -3727,11 +4688,6 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -3742,24 +4698,11 @@ packages: engines: {node: '>=12'} dev: true - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - - /yargs/17.5.1: - resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: - cliui: 7.0.4 + cliui: 8.0.1 escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 @@ -3778,14 +4721,23 @@ packages: engines: {node: '>=10'} dev: true - /z-schema/5.0.4: - resolution: {integrity: sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==} + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /z-schema/5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} engines: {node: '>=8.0.0'} hasBin: true dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 - validator: 13.7.0 + validator: 13.9.0 optionalDependencies: - commander: 2.20.3 + commander: 9.5.0 + dev: true + + /zwitch/2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: true diff --git a/src/easing.ts b/src/easing.ts new file mode 100644 index 0000000..8ccf703 --- /dev/null +++ b/src/easing.ts @@ -0,0 +1,367 @@ +import { getUnit, isNumberLike, limit, scale, toFixed } from "./utils"; + +/** + * The format to use when defining custom frame functions + * An example of a frame function is {@link SpringFrame} + * + * @source Source code of `TypeFrameFunction` + * + * @param t time value between 0 & 1 + * @param spring-parameters + * - mass = mass of object + * - stiffness = stiffness of spring + * - damping = amount to dampen spring motion + * - velocity = initial velocity of spring + * @param duration (optional) the maximum duration (in milliseconds) required for a spring (with its specified spring parameters) to reach a resting position. It's used to ensure the progress of all spring frames put together are smooth + * @returns a single frame of the frame function at the time specified + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + */ +export type TypeFrameFunction = ( + t: number, + [mass, stiffness, damping, velocity]?: number[], + duration?: number, +) => number; + +/** + * The threshold for an infinite loop + * + * @source Source code of `INFINITE_LOOP_LIMIT` + */ +export const INFINITE_LOOP_LIMIT = 100_000; + +/** + * Frame rate in milliseconds + */ +export const FPS_60 = 1000 / 60; + +/** + * Cache the durations at set easing parameters + */ +export const EasingDurationCache: Map< + string, + number +> = new Map(); + +/** + * Generates a single frame of the spring easing at a specific time between (0 to 1) with the spring parameters given [mass, stiffness, damping, velocity] + * + * @param t time value between 0 & 1 + * @param spring-parameters + * - mass = mass of object + * - stiffness = stiffness of spring + * - damping = amount to dampen spring motion + * - velocity = initial velocity of spring + * @param duration (optional) the maximum duration (in milliseconds) required for a spring (with its specified spring parameters) to reach a resting position. It's used to ensure the progress of all spring frames put together are smooth + * @returns a single frame of the spring easing at the time specified + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + * + * Based on [animejs](https://github.com/juliangarnier/anime/blob/3ebfd913a04f7dc59cc3d52e38275272a5a12ae6/src/index.js#L76) + * + * Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ +export const SpringFrame: TypeFrameFunction = ( + t, + [mass = 1, stiffness = 100, damping = 10, velocity = 0] = [], + duration, +) => { + if (t === 0 || t === 1) return t; + + mass = limit(mass, 0.1, 1000); + stiffness = limit(stiffness, 0.1, 1000); + damping = limit(damping, 0.1, 1000); + velocity = limit(velocity, 0.1, 1000); + + const w0 = Math.sqrt(stiffness / mass); + const zeta = damping / (2 * Math.sqrt(stiffness * mass)); + const wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0; + const a = 1; + const b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0; + + let progress = duration ? (duration * t) / 1000 : t; + if (zeta < 1) { + progress = Math.exp(-progress * zeta * w0) + * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress)); + } else { + progress = (a + b * progress) * Math.exp(-progress * w0); + } + + return 1 - progress; +} + +/** + * The spring easing function will only look smooth at certain durations, with certain parameters. + * This functions returns the optimal duration to create a smooth springy animation based on physics + + * @param spring-parameters + * - mass = mass of object + * - stiffness = stiffness of spring + * - damping = amount to dampen spring motion + * - velocity = initial velocity of spring + * @return (optional) optimal duration for spring easings + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + * + * Based on a function of the same name in [animejs](https://github.com/juliangarnier/anime/blob/3ebfd913a04f7dc59cc3d52e38275272a5a12ae6/src/index.js#L100) + */ +export function getSpringDuration([mass, stiffness, damping, velocity]: number[] = [], frameRate = FPS_60) { + const params = [mass, stiffness, damping, velocity]; + const easing = `${params}`; + if (EasingDurationCache.has(easing)) + return EasingDurationCache.get(easing); + + // In seconds + let elapsed = 0; + + let rest = 0; + let count = 0; + + // Add a loop limit, to avoid situations with infinite loops + while (++count < INFINITE_LOOP_LIMIT) { + elapsed += frameRate / 1000; + if (SpringFrame(elapsed, params, null) === 1) { + rest++; + if (rest >= 16) break; + } else { + rest = 0; + } + } + + const duration = elapsed * frameRate; + EasingDurationCache.set(easing, duration); + return duration; +} + +/** + * Creates a new frame function where each frame follows an `out` pattern + * + * @source Source code of `EaseOut` + * + * @param frame frame function (see {@link TypeFrameFunction}, to learn more about frame functions) + * @returns A new frame function that represents the ease-out version of the frame function given as an argument + * + * Based off of another library, but I can't remember which. If any devs are able to find + * the source, I'll gladily place a link to the original source here + */ +export function EaseOut(frame: TypeFrameFunction): TypeFrameFunction { + return (t, params = [], duration) => 1 - frame(1 - t, params, duration); +} + +/** + * Creates a new frame function where each frame follows an `in-out` pattern + * + * @param frame frame function (see {@link TypeFrameFunction}, to learn more about frame functions) + * @returns A new frame function that represents the ease-in-out version of the frame function given as an argument + * + * Based off of another library, but I can't remember which. If any devs are able to find + * the source, I'll gladily place a link to the original source here + */ +export function EaseInOut(frame: TypeFrameFunction): TypeFrameFunction { + return function (t, params = [], duration) { + return t < 0.5 ? + frame(t * 2, params, duration) / 2 : + 1 - frame(t * -2 + 2, params, duration) / 2; + } +} + +/** + * Creates a new frame function where each frame follows an `out-in` pattern + * + * @param frame frame function (see {@link TypeFrameFunction}, to learn more about frame functions) + * @returns A new frame function that represents the ease-in-out version of the frame function given as an argument + * + * Based off of another library, but I can't remember which. If any devs are able to find + * the source, I'll gladily place a link to the original source here + */ +export function EaseOutIn(frame: TypeFrameFunction): TypeFrameFunction { + return function (t, params = [], duration) { + return t < 0.5 + ? (1 - frame(1 - t * 2, params, duration)) / 2 + : (frame(t * 2 - 1, params, duration) + 1) / 2; + } +} + +/** + * Alias of {@link SpringFrame}, + * e.g. "spring in" frame function + */ +export const SpringInFrame = SpringFrame; + +/** + * "spring-out" frame function where each {@link SpringFrame} follows an ease `out` pattern + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + * + * @source Source code of `SpringOutFrame` + */ +export const SpringOutFrame = EaseOut(SpringFrame); + +/** + * "spring-in-out" frame function where each {@link SpringFrame} follows an ease `in-out` pattern + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + * + * @source Source code of `SpringInOutFrame` + */ +export const SpringInOutFrame = EaseInOut(SpringFrame); + +/** + * "spring-out-in" frame function where each {@link SpringFrame} follows an ease `out-in` pattern + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + * + * @source Source code of `SpringOutInFrame` + */ +export const SpringOutInFrame = EaseOutIn(SpringFrame); + +/** + * The array frame function format for easings, + * @example + * `[SpringFrame, mass, stiffness, damping, velocity]` + */ +export type TypeArrayFrameFunctionFormat = [TypeFrameFunction, ...number[]]; + +/** + * The list of spring easing functions + */ +export let EasingFunctions = { + spring: SpringFrame, + "spring-in": SpringInFrame, + "spring-out": SpringOutFrame, + "spring-in-out": SpringInOutFrame, + "spring-out-in": SpringOutInFrame, +}; + +export let EasingFunctionKeys = Object.keys(EasingFunctions); + +/** + * Allows you to register new easing functions + */ +export function registerEasingFunction(key: T, fn?: TypeFrameFunction) { + EasingFunctions = { ...EasingFunctions, [key]: fn }; + EasingFunctionKeys = Object.keys(EasingFunctions); +} + +/** + * Allows you to register multiple new easing functions + */ +export function registerEasingFunctions>(obj: T) { + EasingFunctions = { ...EasingFunctions, ...obj }; + EasingFunctionKeys = Object.keys(EasingFunctions); +} + +/** + * The formats supported for easings, + * @example + * * `"spring(mass, stiffness, damping, velocity)"` + * * `"spring-in(mass, stiffness, damping, velocity)"` + * * `"spring-out(mass, stiffness, damping, velocity)"` + * * `"spring-in-out(mass, stiffness, damping, velocity)"` + * * `"spring-out-in(mass, stiffness, damping, velocity)"` + * `[SpringFrame, mass, stiffness, damping, velocity]` + */ +export type TypeEasings = `${keyof typeof EasingFunctions}` | `${keyof typeof EasingFunctions}(${string})` | (string & {}) | TypeArrayFrameFunctionFormat; + +/** + * Spring Easing has 3 properties they are `easing` (all spring frame functions are supported), `numPoints` (the size of the Array the frmae function should create), and `decimal` (the number of decimal places of the values within said Array). + * + * | Properties | Default Value | + * | ----------- | ----------------------- | + * | `easing` | `spring(1, 100, 10, 0)` | + * | `numPoints` | `50` | + * | `decimal` | `3` | + */ +export type TypeEasingOptions = { + /** + * By default, Spring Easing support easings in the form, + * + * | constant | accelerate | decelerate | accelerate-decelerate | decelerate-accelerate | + * | :--------- | :----------------- | :------------- | :-------------------- | :-------------------- | + * | | spring / spring-in | spring-out | spring-in-out | spring-out-in | + * + * All **Spring** easing's can be configured using theses parameters, + * + * `"spring-*(mass, stiffness, damping, velocity)"` or + * `[SpringOutFrame, mass, stiffness, damping, velocity]` + * + * Each parameter comes with these defaults + * + * | Parameter | Default Value | + * | --------- | ------------- | + * | mass | `1` | + * | stiffness | `100` | + * | damping | `10` | + * | velocity | `0` | + */ + easing?: TypeEasings; + numPoints?: number; + decimal?: number; + frameRate?: number; +}; + +/** + * Convert easing parameters to Array of numbers, e.g. "spring(2, 500)" to [2, 500] + * + * Based off of [animejs](https://github.com/juliangarnier/anime/blob/3ebfd913a04f7dc59cc3d52e38275272a5a12ae6/src/index.js#L69) + */ +export function parseEasingParameters(str: string) { + const match = /(\(|\s)([^)]+)\)?/.exec(str.toString()); + return match + ? match[2].split(",").map((value) => { + let num = parseFloat(value); + return !Number.isNaN(num) ? num : value.trim(); + }) + : []; +} + +/** + * Returns a {@link TypeEasingOptions} object from a easing "string", or frame function array + * + * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + */ +export function EasingOptions( + options: TypeEasingOptions | TypeEasingOptions["easing"] = {}, +) { + const isEasing = typeof options === "string" || (Array.isArray(options) && typeof options[0] === "function"); + let { + easing = [SpringFrame, 1, 100, 10, 0], + numPoints = 100, + decimal = 3, + frameRate = FPS_60, + } = (isEasing ? { easing: options } : options) as TypeEasingOptions; + + if (typeof easing === "string") { + const frameFunction = EasingFunctions[ + easing.replace(/(\(|\s).+/, "") // Remove the function brackets and parameters + .toLowerCase() + .trim() + ]; + + const params = parseEasingParameters(easing); + easing = [frameFunction, ...params] as TypeArrayFrameFunctionFormat; + } + + return { easing, numPoints, decimal, frameRate }; +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 0661456..fc562bd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,499 +1,97 @@ // Adapted from https://github.com/okikio/native/blob/726b26bc3f7a84d2750aa2ffc13572a2a4de905c/packages/animate/src/custom-easing.ts, which is licensed under the MIT license. // If the above file is removed or modified, you can access the original state in the following GitHub Gist: https://gist.github.com/okikio/bed53ed621cb7f60e9a8b1ef92897471 -import type { TypeInterpolationFunction } from "./utils"; -import { getUnit, isNumberLike, limit, scale, toFixed } from "./utils"; +import type { TypeEasingOptions } from "./easing"; +import type { IGenericInterpolationFn } from "./interpolate/index"; +import { EasingOptions, getSpringDuration } from "./easing"; +import { interpolateNumber } from "./interpolate/index"; + +export * from "./interpolate/index"; export * from "./utils"; /** - * The format to use when defining custom frame functions - * An example of a frame function is {@link SpringFrame} - * - * @source Source code of `TypeFrameFunction` - * - * @param t time value between 0 & 1 - * @param spring-parameters - * - mass = mass of object - * - stiffness = stiffness of spring - * - damping = amount to dampen spring motion - * - velocity = initial velocity of spring - * @param duration (optional) the maximum duration (in milliseconds) required for a spring (with its specified spring parameters) to reach a resting position. It's used to ensure the progress of all spring frames put together are smooth - * @returns a single frame of the frame function at the time specified - * - * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ + * Cache generated frame points for commonly used easing functions */ -export type TypeFrameFunction = ( - t: number, - [mass, stiffness, damping, velocity]?: number[], - duration?: number, -) => number; +export const FramePtsCache = new Map>(); /** - * Generates a single frame of the spring easing at a specific time between (0 to 1) with the spring parameters given [mass, stiffness, damping, velocity] - * - * @param t time value between 0 & 1 - * @param spring-parameters - * - mass = mass of object - * - stiffness = stiffness of spring - * - damping = amount to dampen spring motion - * - velocity = initial velocity of spring - * @param duration (optional) the maximum duration (in milliseconds) required for a spring (with its specified spring parameters) to reach a resting position. It's used to ensure the progress of all spring frames put together are smooth - * @returns a single frame of the spring easing at the time specified + * Create an Array of frames using the easing specified. + * The array size `numPoints` large, which is by default 100. + * Easing can be use custom defined frame functions, so, instead of string you can use, + * e.g. + * ```ts + * GenerateSpringFrames({ + * easing: [SpringOutInFrame, 1, 100, 10, 0], + * numPoints: 100 + * }) + * ``` * * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ * - * Based on [animejs](https://github.com/juliangarnier/anime/blob/3ebfd913a04f7dc59cc3d52e38275272a5a12ae6/src/index.js#L76) - * - * Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ -export const SpringFrame: TypeFrameFunction = ( - t, - [mass = 1, stiffness = 100, damping = 10, velocity = 0] = [], - duration, -) => { - if (t === 0 || t === 1) return t; - - mass = limit(mass, 0.1, 1000); - stiffness = limit(stiffness, 0.1, 1000); - damping = limit(damping, 0.1, 1000); - velocity = limit(velocity, 0.1, 1000); - - const w0 = Math.sqrt(stiffness / mass); - const zeta = damping / (2 * Math.sqrt(stiffness * mass)); - const wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0; - const a = 1; - const b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0; - - let progress = duration ? (duration * t) / 1000 : t; - if (zeta < 1) { - progress = Math.exp(-progress * zeta * w0) - * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress)); - } else { - progress = (a + b * progress) * Math.exp(-progress * w0); - } - - return 1 - progress; -} - -/** - * Cache the durations at set easing parameters - */ -export const EasingDurationCache: Map< - string, - number -> = new Map(); - -/** - * The threshold for an infinite loop - * - * @source Source code of `INFINITE_LOOP_LIMIT` + * @param options Accepts {@link TypeEasingOptions EasingOptions} + * + * Based on https://github.com/w3c/csswg-drafts/issues/229#issuecomment-861415901 */ -export const INFINITE_LOOP_LIMIT = 100_000; - -/** - * The spring easing function will only look smooth at certain durations, with certain parameters. - * This functions returns the optimal duration to create a smooth springy animation based on physics +export function GenerateSpringFrames(options: TypeEasingOptions = {}): [number[], number] { + let { + easing, + numPoints, + frameRate + } = EasingOptions(options); - * @param spring-parameters - * - mass = mass of object - * - stiffness = stiffness of spring - * - damping = amount to dampen spring motion - * - velocity = initial velocity of spring - * @return (optional) optimal duration for spring easings - * - * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ - * - * Based on a function of the same name in [animejs](https://github.com/juliangarnier/anime/blob/3ebfd913a04f7dc59cc3d52e38275272a5a12ae6/src/index.js#L100) - */ -export function getSpringDuration([mass, stiffness, damping, velocity]: number[] = []) { - let params = [mass, stiffness, damping, velocity]; - let easing = `${params}`; - if (EasingDurationCache.has(easing)) - return EasingDurationCache.get(easing); + if (Array.isArray(easing)) { + if (typeof easing[0] != "function") { + throw new Error( + "[spring-easing] A frame function is required as the first element in the easing array, e.g. [SpringFrame, ...]", + ); + } - const frame = 1 / 6; - let elapsed = 0; - let rest = 0; - let count = 0; + // Be careful of only setting some of the spring parameters + if (easing.length > 1 && easing.length < 5) + console.warn(`[spring-easing] Be careful of only setting some of the spring parameters, you've only set ${5 - easing.length} spring parameter(s). The easing works best in the format: \n* "spring-out(mass, stiffness, damping, velocity)" or \n* [SpringOutFrame, mass, stiffness, damping, velocity].`); - // Add a loop limit, to avoid situations with infinite loops - while (++count < INFINITE_LOOP_LIMIT) { - elapsed += frame; - if (SpringFrame(elapsed, params, null) === 1) { - rest++; - if (rest >= 16) break; - } else { - rest = 0; + if (easing.length > 5) { + console.warn( + `[spring-easing] You entered ${5 - easing.length + } more spring parameter(s) than necessary. The easing needs to be in the format: \n* "spring-out(mass, stiffness, damping, velocity)" or \n* [SpringOutFrame, mass, stiffness, damping, velocity].`, + ); } + } else { + throw new Error( + `[spring-easing] The easing needs to be in the format: \n* "spring-out(mass, stiffness, damping, velocity)" or \n* [SpringOutFrame, mass, stiffness, damping, velocity], the easing recieved is "${easing}", [spring-easing] doesn't really know what to do with that.`, + ); } - const duration = elapsed * frame * 1000; - EasingDurationCache.set(easing, duration); - return duration; -} - -/** - * Creates a new frame function where each frame follows an `out` pattern - * - * @source Source code of `EaseOut` - * - * @param frame frame function (see {@link TypeFrameFunction}, to learn more about frame functions) - * @returns A new frame function that represents the ease-out version of the frame function given as an argument - * - * Based off of another library, but I can't remember which. If any devs are able to find - * the source, I'll gladily place a link to the original source here - */ -export function EaseOut(frame: TypeFrameFunction): TypeFrameFunction { - return (t, params = [], duration) => 1 - frame(1 - t, params, duration); -} - -/** - * Creates a new frame function where each frame follows an `in-out` pattern - * - * @param frame frame function (see {@link TypeFrameFunction}, to learn more about frame functions) - * @returns A new frame function that represents the ease-in-out version of the frame function given as an argument - * - * Based off of another library, but I can't remember which. If any devs are able to find - * the source, I'll gladily place a link to the original source here - */ -export function EaseInOut(frame: TypeFrameFunction): TypeFrameFunction { - return function (t, params = [], duration) { - return t < 0.5 - ? frame(t * 2, params, duration) / 2 - : 1 - frame(t * -2 + 2, params, duration) / 2; - } -} + const [frameFunction, ...params] = easing; + const key = `${params},${numPoints}`; -/** - * Creates a new frame function where each frame follows an `out-in` pattern - * - * @param frame frame function (see {@link TypeFrameFunction}, to learn more about frame functions) - * @returns A new frame function that represents the ease-in-out version of the frame function given as an argument - * - * Based off of another library, but I can't remember which. If any devs are able to find - * the source, I'll gladily place a link to the original source here - */ -export function EaseOutIn(frame: TypeFrameFunction): TypeFrameFunction { - return function (t, params = [], duration) { - return t < 0.5 - ? (1 - frame(1 - t * 2, params, duration)) / 2 - : (frame(t * 2 - 1, params, duration) + 1) / 2; + if (FramePtsCache.has(key)) { + let tempObj = FramePtsCache.get(key); + if (tempObj.has(frameFunction)) + return tempObj.get(frameFunction); } -} - -/** - * Alias of {@link SpringFrame}, - * e.g. "spring in" frame function - */ -export const SpringInFrame = SpringFrame; - -/** - * "spring-out" frame function where each {@link SpringFrame} follows an ease `out` pattern - * - * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ - * - * @source Source code of `SpringOutFrame` - */ -export const SpringOutFrame = EaseOut(SpringFrame); -/** - * "spring-in-out" frame function where each {@link SpringFrame} follows an ease `in-out` pattern - * - * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ - * - * @source Source code of `SpringInOutFrame` - */ -export const SpringInOutFrame = EaseInOut(SpringFrame); - -/** - * "spring-out-in" frame function where each {@link SpringFrame} follows an ease `out-in` pattern - * - * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ - * - * @source Source code of `SpringOutInFrame` - */ -export const SpringOutInFrame = EaseOutIn(SpringFrame); - -/** - * Given an Array of numbers, estimate the resulting number, at a `t` value between 0 to 1 - - * Basic interpolation works by scaling `t` from 0 - 1, to some start number and end number, in this case lets use - * 0 as our start number and 100 as our end number, so, basic interpolation would interpolate between 0 to 100. - - * If we use a `t` of 0.5, the interpolated value between 0 to 100, is 50. - * {@link interpolateNumber} takes it further, by allowing you to interpolate with more than 2 values, - * it allows for multiple values. - * E.g. Given an Array of values [0, 100, 0], and a `t` of 0.5, the interpolated value would become 100. - - * Based on d3.interpolateBasis [https://github.com/d3/d3-interpolate#interpolateBasis], - * check out the link above for more detail. - * - * @param t A number between 0 to 1 - * @param values Array of numbers to interpolate between - * @param decimal How many decimals should the interpolated value have - * @return Interpolated number at instant `t` - * - * @source Source code of `interpolateNumber` -*/ -export function interpolateNumber(t: number, values: number[], decimal = 3) { - // nth index - const n = values.length - 1; - - // The current index given t - const i = limit(Math.floor(t * n), 0, n - 1); - - const start = values[i]; - const end = values[i + 1]; - const progress = (t - i / n) * n; - - return toFixed(scale(progress, start, end), decimal); -} - -/** - * Given an Array of values, find a value using `t` (which goes from 0 to 1), by - * using `t` to estimate the index of said value in the array of `values` - - * This is meant for interplolating strings that aren't number-like - - * @param t A number between 0 to 1 - * @param values Array of numbers to interpolate between - * @return Interpolated numbers at different instances - - * @source Source code of `interpolateSequence` -*/ -export function interpolateSequence( - t: number, - values: T[] -) { - // nth index - const n = values.length - 1; - - // limit `t`, to a min of 0 and a max of 1 - t = limit(t, 0, 1); - - // The current index given t - const i = Math.round(t * n); - return values[i]; -} - -/** - * Alias of {@link interpolateSequence} - * @deprecated please use {@link interpolateSequence}, it's the same functionality but different name - */ -export const interpolateUsingIndex = interpolateSequence; - -/** - * Functions the same way {@link interpolateNumber} works. - * Convert strings to numbers, and then interpolates the numbers, - * at the end if there are units on the first value in the `values` array, - * it will use that unit for the interpolated result. - * Make sure to read {@link interpolateNumber}. - * - * @source Source code of `interpolateString` -*/ -export function interpolateString( - t: number, - values: (string | number)[], - decimal = 3 -) { - let units = ""; - - // If the first value looks like a number with a unit - if (isNumberLike(values[0])) units = getUnit(values[0]); - return ( - interpolateNumber( - t, - values.map((v) => (typeof v == "number" ? v : parseFloat(v))), - decimal - ) + units - ); -} - -/** - * Interpolates all types of values including number, and string values. - * Make sure to read {@link interpolateNumber}, {@link interpolateString} and {@link interpolateSequence}. - * - * @source Source code of `interpolateComplex` -*/ -export function interpolateComplex( - t: number, - values: T[], - decimal = 3 -) { - // Interpolate numbers - const isNumber = values.every((v) => typeof v == "number"); - if (isNumber) return interpolateNumber(t, values as number[], decimal); - - // Interpolate strings with numbers, e.g. "5px" - const isLikeNumber = values.every((v) => isNumberLike(v as string)); - if (isLikeNumber) - return interpolateString(t, values as (number | string)[], decimal); - - // Interpolate pure strings and/or other type of values, e.g. "inherit", "solid", etc... - return interpolateSequence(t, values); -} - -/** - * The array frame function format for easings, - * @example - * `[SpringFrame, mass, stiffness, damping, velocity]` - */ -export type TypeArrayFrameFunctionFormat = [TypeFrameFunction, ...number[]]; - -/** - * The list of spring easing functions - */ -export let EasingFunctions = { - spring: SpringFrame, - "spring-in": SpringInFrame, - "spring-out": SpringOutFrame, - "spring-in-out": SpringInOutFrame, - "spring-out-in": SpringOutInFrame, -}; - -export let EasingFunctionKeys = Object.keys(EasingFunctions); - -/** - * Allows you to register new easing functions - */ -export function registerEasingFunction(key: T, fn?: TypeFrameFunction) { - EasingFunctions = { ...EasingFunctions, [key]: fn }; - EasingFunctionKeys = Object.keys(EasingFunctions); -} - -/** - * Allows you to register multiple new easing functions - */ -export function registerEasingFunctions>(obj: T) { - EasingFunctions = { ...EasingFunctions, ...obj }; - EasingFunctionKeys = Object.keys(EasingFunctions); -} - -/** - * The formats supported for easings, - * @example - * * `"spring(mass, stiffness, damping, velocity)"` - * * `"spring-in(mass, stiffness, damping, velocity)"` - * * `"spring-out(mass, stiffness, damping, velocity)"` - * * `"spring-in-out(mass, stiffness, damping, velocity)"` - * * `"spring-out-in(mass, stiffness, damping, velocity)"` - * `[SpringFrame, mass, stiffness, damping, velocity]` - */ -export type TypeEasings = `${keyof typeof EasingFunctions}` | `${keyof typeof EasingFunctions}(${string})` | (string & {}) | TypeArrayFrameFunctionFormat; - -/** - * Spring Easing has 3 properties they are `easing` (all spring frame functions are supported), `numPoints` (the size of the Array the frmae function should create), and `decimal` (the number of decimal places of the values within said Array). - * - * | Properties | Default Value | - * | ----------- | ----------------------- | - * | `easing` | `spring(1, 100, 10, 0)` | - * | `numPoints` | `50` | - * | `decimal` | `3` | - */ -export type TypeEasingOptions = { - /** - * By default, Spring Easing support easings in the form, - * - * | constant | accelerate | decelerate | accelerate-decelerate | decelerate-accelerate | - * | :--------- | :----------------- | :------------- | :-------------------- | :-------------------- | - * | | spring / spring-in | spring-out | spring-in-out | spring-out-in | - * - * All **Spring** easing's can be configured using theses parameters, - * - * `"spring-*(mass, stiffness, damping, velocity)"` or - * `[SpringOutFrame, mass, stiffness, damping, velocity]` - * - * Each parameter comes with these defaults - * - * | Parameter | Default Value | - * | --------- | ------------- | - * | mass | `1` | - * | stiffness | `100` | - * | damping | `10` | - * | velocity | `0` | - */ - easing?: TypeEasings; - numPoints?: number; - decimal?: number; -}; - -/** - * Convert easing parameters to Array of numbers, e.g. "spring(2, 500)" to [2, 500] - * - * Based off of [animejs](https://github.com/juliangarnier/anime/blob/3ebfd913a04f7dc59cc3d52e38275272a5a12ae6/src/index.js#L69) - */ -export function parseEasingParameters(str: string) { - const match = /(\(|\s)([^)]+)\)?/.exec(str.toString()); - return match - ? match[2].split(",").map((value) => { - let num = parseFloat(value); - return !Number.isNaN(num) ? num : value.trim(); - }) - : []; -} - -/** - * Returns a {@link TypeEasingOptions} object from a easing "string", or frame function array - * - * _**Note**: Be very careful of only setting some of the spring parameters, it can cause errors if you are not careful_ - */ -export function EasingOptions( - options: TypeEasingOptions | TypeEasingOptions["easing"] = {}, -) { - const isEasing = typeof options == "string" || (Array.isArray(options) && typeof options[0] == "function"); - let { - easing = [SpringFrame, 1, 100, 10, 0], - numPoints = 100, - decimal = 3, - } = (isEasing ? { easing: options } : options) as TypeEasingOptions; - - if (typeof easing == "string") { - const frameFunction = EasingFunctions[ - easing.replace(/(\(|\s).+/, "") // Remove the function brackets and parameters - .toLowerCase() - .trim() - ]; - - const params = parseEasingParameters(easing); - easing = [frameFunction, ...params] as TypeArrayFrameFunctionFormat; + const pts: number[] = []; + const duration = getSpringDuration(params, frameRate); + + let i = 0; + for (; i < numPoints; i++) { + pts[i] = frameFunction(i / (numPoints - 1), params, duration); } - return { easing, numPoints, decimal }; + const tempObj = FramePtsCache.has(key) ? FramePtsCache.get(key) : new WeakMap(); + tempObj.set(frameFunction, [pts, duration]); + FramePtsCache.set(key, tempObj); + return [pts, duration]; } -/** - * Cache generated frame points for commonly used easing functions - */ -export const FramePtsCache = new Map>(); - /** * Create an Array of frames using the easing specified. * The array size `numPoints` large, which is by default 100. * Easing can be use custom defined frame functions, so, instead of string you can use, * e.g. * ```ts - * GenerateSpringFrames({ + * GenerateCustomFrames({ * easing: [SpringOutInFrame, 1, 100, 10, 0], * numPoints: 100 * }) @@ -505,10 +103,11 @@ export const FramePtsCache = new Map( +export function SpringEasing( values: T[], options: TypeEasingOptions | TypeEasingOptions["easing"] = {}, - customInterpolate: TypeInterpolationFunction = interpolateComplex + customInterpolate: IGenericInterpolationFn = interpolateNumber ) { const optionsObj = EasingOptions(options); const [frames, duration] = GenerateSpringFrames(optionsObj); diff --git a/src/interpolate/batch.ts b/src/interpolate/batch.ts new file mode 100644 index 0000000..8da039e --- /dev/null +++ b/src/interpolate/batch.ts @@ -0,0 +1,277 @@ +// Adapted from https://github.com/okikio/native/blob/726b26bc3f7a84d2750aa2ffc13572a2a4de905c/packages/animate/src/custom-easing.ts, which is licensed under the MIT license. +// If the above file is removed or modified, you can access the original state in the following GitHub Gist: https://gist.github.com/okikio/bed53ed621cb7f60e9a8b1ef92897471 +import { EasingOptions, TypeEasingOptions } from "../easing"; +import { GenerateSpringFrames } from "../index"; +import { getUnit, isNumberLike, limit, scale, toFixed } from "../utils"; + +export * from "../utils"; +export * from "../index"; + +/** + * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame + */ +export interface IGenericInterpolationFn { + (arr_t: number[], values: T[], decimal?: number): TReturn[]; +} + +/** + * Given an Array of numbers, estimate the resulting number, at a `t` value between 0 to 1 + + * Basic interpolation works by scaling `t` from 0 - 1, to some start number and end number, in this case lets use + * 0 as our start number and 100 as our end number, so, basic interpolation would interpolate between 0 to 100. + + * If we use a `t` of 0.5, the interpolated value between 0 to 100, is 50. + * {@link interpolateNumber} takes it further, by allowing you to interpolate with more than 2 values, + * it allows for multiple values. + * E.g. Given an Array of values [0, 100, 0], and a `t` of 0.5, the interpolated value would become 100. + + * Based on d3.interpolateBasis [https://github.com/d3/d3-interpolate#interpolateBasis], + * check out the link above for more detail. + * + * Buliding on-top of {@link interpolateNumber}, `interpolateNumberBatch` interpolates between numbers, but unlike {@link interpolateNumber} + * `interpolateNumberBatch` uses an Array of `t` instances to generate an array of interpolated values + * + * @param arr_t Array of numbers (between 0 to 1) which each represent an instant of the interpolation + * @param values Array of numbers to interpolate between + * @param decimal How many decimals should the interpolated value have + * @return Array of interpolated numbers at different instances + * + * @source Source code of `interpolateNumberBatch` +*/ +export function interpolateNumber(arr_t: number[], values: number[], decimal = 3) { + // nth index + const n = values.length - 1; + const results: number[] = []; + + let t = 0; + let t_index = 0; + let len = arr_t.length; + + for (; t_index < len; t_index++) { + t = arr_t[t_index]; + + // The current index given t + const i = limit(Math.floor(t * n), 0, n - 1); + + const start = values[i]; + const end = values[i + 1]; + const progress = (t - i / n) * n; + + results.push(toFixed(scale(progress, start, end), decimal)); + } + + return results; +} + +/** + * Given an Array of items, find an item using `t` (which goes from 0 to 1), by + * using `t` to estimate the index of said value in the array of `values`, + * then expand that to encompass multiple `t`'s in an Array, + * which returns Array items which each follow the interpolated index value + + * This is meant for interplolating strings that aren't number-like + + * @param arr_t Array of numbers (between 0 to 1) which each represent an instance of the interpolation + * @param values Array of items to choose from + * @return Array of Interpolated input Array items at different instances + + * @source Source code of `interpolateSequenceBatch` +*/ +export function interpolateSequence( + arr_t: number[], + values: T[] +) { + // nth index + const n = values.length - 1; + const results: T[] = []; + + let t = 0; + let t_index = 0; + let len = arr_t.length; + + for (; t_index < len; t_index++) { + // limit `t`, to a min of 0 and a max of 1 + t = limit(arr_t[t_index], 0, 1); + + // The current index given t + const i = Math.round(t * n); + results.push(values[i]); + } + + return results; +} + +/** + * Alias of {@link interpolateSequence} + * @deprecated please use {@link interpolateSequence}, it's the same functionality but different name + */ +export const interpolateUsingIndex = interpolateSequence; + +/** + * Functions the same way {@link interpolateNumber} works. + * Convert strings to numbers, and then interpolates the numbers, + * at the end if there are units on the first value in the `values` array, + * it will use that unit for the interpolated result. + * Make sure to read {@link interpolateNumber}. + * + * @source Source code of `interpolateStringBatch` +*/ +export function interpolateString( + arr_t: number[], + values: (string | number)[], + decimal = 3 +) { + let units = ""; + + // If the first value looks like a number with a unit + if (isNumberLike(values[0])) units = getUnit(values[0])[1]; + return ( + interpolateNumber( + arr_t, + values.map((v) => (typeof v === "number" ? v : parseFloat(v))), + decimal + ).map(value => value + units) + ); +} + +/** + * Interpolates all types of values including number, string, etc... values. + * Make sure to read {@link interpolateNumber}, {@link interpolateString} and {@link interpolateSequence}, + * as depending on the values given + * + * @source Source code of `interpolateComplexBatch` +*/ +export function interpolateComplex( + arr_t: number[], + values: T[], + decimal = 3 +) { + let isNumber = true; + let isLikeNumber = true; + + let i = 0; + let v: T; + const len = values.length; + for (; i < len; i++) { + v = values[i]; + if (isNumber) isNumber = typeof v === "number"; + if (isLikeNumber) isLikeNumber = isNumberLike(v as string); + } + + // Interpolate numbers + if (isNumber) return interpolateNumber(arr_t, values as number[], decimal); + + // Interpolate strings with numbers, e.g. "5px" + if (isLikeNumber) + return interpolateString(arr_t, values as (number | string)[], decimal); + + // Interpolate pure strings and/or other type of values, e.g. "inherit", "solid", etc... + return interpolateSequence(arr_t, values); +} + +/** + * Generates an Array of values using frame functions which in turn create the effect of spring easing. + * To use this properly make sure to set the easing animation option to "linear". + * Check out a demo of SpringEasing at + * + * SpringEasing has 3 properties they are `easing` (all the easings from {@link EasingFunctions} are supported on top of frame functions like SpringFrame, SpringFrameOut, etc..), `numPoints` (the size of the Array the frame function should create), and `decimal` (the number of decimal places of the values within said Array). + * + * | Properties | Default Value | + * | ----------- | ----------------------- | + * | `easing` | `spring(1, 100, 10, 0)` | + * | `numPoints` | `50` | + * | `decimal` | `3` | + * + * By default, Spring Easing support easings in the form, + * + * | constant | accelerate | decelerate | accelerate-decelerate | decelerate-accelerate | + * | :--------- | :----------------- | :------------- | :-------------------- | :-------------------- | + * | | spring / spring-in | spring-out | spring-in-out | spring-out-in | + * + * All **Spring** easing's can be configured using theses parameters, + * + * `spring-*(mass, stiffness, damping, velocity)` + * + * Each parameter comes with these defaults + * + * | Parameter | Default Value | + * | --------- | ------------- | + * | mass | `1` | + * | stiffness | `100` | + * | damping | `10` | + * | velocity | `0` | + * + * e.g. + * ```ts + * import { SpringEasing, SpringOutFrame } from "spring-easing"; + * import anime from "animejs"; + * + * // Note: this is the return value of {@link SpringEasing} and {@link GenerateSpringFrames}, you don't need the object to get this format + * let [translateX, duration] = SpringEasing([0, 250], { + * easing: "spring-out-in(1, 100, 10, 0)", + * + * // You can change the size of Array for the SpringEasing function to generate + * numPoints: 200, + * + * // The number of decimal places to round, final values in the generated Array + * // This option doesn't exist on {@link GenerateSpringFrames} + * decimal: 5, + * }); + * + * anime({ + * targets: "div", + * + * // Using spring easing animate from [0 to 250] using `spring-out-in` + * translateX, + * + * // You can set the easing without an object + * rotate: SpringEasing(["0turn", 1, 0, 0.5], [SpringOutFrame, 1, 100, 10, 0])[0], + * + * // TIP... Use linear easing for the proper effect + * easing: "linear", + * + * // The optimal duration for this specific spring + * duration + * }) + * ``` + * + * @param values Values to animate between, e.g. `["50px", 60]` + * > _**Note**: You can interpolate with more than 2 values, but it's very confusing, so, it's best to choose 2_ + * @param options Accepts {@link TypeEasingOptions EasingOptions} or {@link TypeEasingOptions.easing array frame functions} + * @param interpolationFunction If you wish to use your own interpolation functions you may + * @return + * ```ts + * // An array of keyframes that represent said spring animation and + * // Total duration (in milliseconds) required to create a smooth spring animation + * [ + * [50, 55, 60, 70, 80, ...], + * 3500 + * ] + * ``` + */ +export function SpringEasing( + values: T[], + options: TypeEasingOptions | TypeEasingOptions["easing"] = {}, + customInterpolate?: IGenericInterpolationFn +) { + const optionsObj = EasingOptions(options); + const [frames, duration] = GenerateSpringFrames(optionsObj); + + return [ + customInterpolate ? + interpolateNumber(frames, values, optionsObj.decimal) : + customInterpolate(frames, values, optionsObj.decimal), + duration + ] as const; +} + +/** + * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame + */ +export interface IGenericInterpolationFn { + (arr_t: number[], values: T[], decimal?: number): TReturn[]; +} + +SpringEasing([21231,234,23423,"123123"], "spring", interpolateNumber) + +export default SpringEasing; diff --git a/src/interpolate/index.ts b/src/interpolate/index.ts new file mode 100644 index 0000000..4a91f73 --- /dev/null +++ b/src/interpolate/index.ts @@ -0,0 +1,127 @@ +import { getUnit, isNumberLike, limit, scale, toFixed } from "../utils"; + +/** + * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame + */ +export interface IGenericInterpolationFn { + (t: number, values: T[], decimal?: number): TReturn; +} + +/** + * Given an Array of numbers, estimate the resulting number, at a `t` value between 0 to 1 + + * Basic interpolation works by scaling `t` from 0 - 1, to some start number and end number, in this case lets use + * 0 as our start number and 100 as our end number, so, basic interpolation would interpolate between 0 to 100. + + * If we use a `t` of 0.5, the interpolated value between 0 to 100, is 50. + * {@link interpolateNumber} takes it further, by allowing you to interpolate with more than 2 values, + * it allows for multiple values. + * E.g. Given an Array of values [0, 100, 0], and a `t` of 0.5, the interpolated value would become 100. + + * Based on d3.interpolateBasis [https://github.com/d3/d3-interpolate#interpolateBasis], + * check out the link above for more detail. + * + * @param t A number between 0 to 1 + * @param values Array of numbers to interpolate between + * @param decimal How many decimals should the interpolated value have + * @return Interpolated number at instant `t` + * + * @source Source code of `interpolateNumber` +*/ +export function interpolateNumber(t: number, values: number[], decimal = 3) { + // nth index + const n = values.length - 1; + + // The current index given t + const i = limit(Math.floor(t * n), 0, n - 1); + + const start = values[i]; + const end = values[i + 1]; + const progress = (t - i / n) * n; + + return toFixed(scale(progress, start, end), decimal); +} + +/** + * Given an Array of values, find a value using `t` (which goes from 0 to 1), by + * using `t` to estimate the index of said value in the array of `values` + + * This is meant for interplolating strings that aren't number-like + + * @param t Progress as number between 0 to 1 + * @param values Array of numbers to interpolate between + * @return Interpolated numbers at different instances + + * @source Source code of `interpolateSequence` +*/ +export function interpolateSequence( + t: number, + values: T[] +) { + // nth index + const n = values.length - 1; + + // limit `t`, to a min of 0 and a max of 1 + t = limit(t, 0, 1); + + // The current index given t + const i = Math.round(t * n); + return values[i]; +} + +/** + * Alias of {@link interpolateSequence} + * @deprecated please use {@link interpolateSequence}, it's the same functionality but different name + */ +export const interpolateUsingIndex = interpolateSequence; + +/** + * Functions the same way {@link interpolateNumber} works. + * Convert strings to numbers, and then interpolates the numbers, + * at the end if there are units on the first value in the `values` array, + * it will use that unit for the interpolated result. + * Make sure to read {@link interpolateNumber}. + * + * @source Source code of `interpolateString` +*/ +export function interpolateString( + t: number, + values: (string | number)[], + decimal = 3 +) { + let units = ""; + + // If the first value looks like a number with a unit + if (isNumberLike(values[0])) units = getUnit(values[0])[1]; + return ( + interpolateNumber( + t, + values.map((v) => (typeof v === "number" ? v : parseFloat(v))), + decimal + ) + units + ); +} + +/** + * Interpolates all types of values including number, and string values. + * Make sure to read {@link interpolateNumber}, {@link interpolateString} and {@link interpolateSequence}. + * + * @source Source code of `interpolateComplex` +*/ +export function interpolateComplex( + t: number, + values: T[], + decimal = 3 +) { + // Interpolate numbers + const isNumber = values.every((v) => typeof v === "number"); + if (isNumber) return interpolateNumber(t, values as number[], decimal); + + // Interpolate strings with numbers, e.g. "5px" + const isLikeNumber = values.every((v) => isNumberLike(v as string)); + if (isLikeNumber) + return interpolateString(t, values as (number | string)[], decimal); + + // Interpolate pure strings and/or other type of values, e.g. "inherit", "solid", etc... + return interpolateSequence(t, values); +} \ No newline at end of file diff --git a/src/interpolate/iterators.ts b/src/interpolate/iterators.ts new file mode 100644 index 0000000..131c070 --- /dev/null +++ b/src/interpolate/iterators.ts @@ -0,0 +1,254 @@ +// Adapted from https://github.com/okikio/native/blob/726b26bc3f7a84d2750aa2ffc13572a2a4de905c/packages/animate/src/custom-easing.ts, which is licensed under the MIT license. +// If the above file is removed or modified, you can access the original state in the following GitHub Gist: https://gist.github.com/okikio/bed53ed621cb7f60e9a8b1ef92897471 +import type { TypeEasingOptions } from "../easing"; + +import { getUnit, isNumberLike, limit, scale, toFixed } from "../utils"; +import { GenerateSpringFrames } from "../index"; +import { EasingOptions } from "../easing"; + +/** + * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame + */ +export interface IGenericInterpolationFn { + (itt_t: Iterator, values: T[], decimal?: number): TReturn; +} + +export * from "../utils"; +export * from "../index"; + +/** + * Given an iterable of numbers, estimate the resulting number, at a `t` value between 0 to 1 + + * Basic interpolation works by scaling `t` from 0 - 1, to some start number and end number, in this case lets use + * 0 as our start number and 100 as our end number, so, basic interpolation would interpolate between 0 to 100. + + * If we use a `t` of 0.5, the interpolated value between 0 to 100, is 50. + * {@link interpolateNumber} takes it further, by allowing you to interpolate with more than 2 values, + * it allows for multiple values. + * E.g. Given an Array of values [0, 100, 0], and a `t` of 0.5, the interpolated value would become 100. + + * Based on d3.interpolateBasis [https://github.com/d3/d3-interpolate#interpolateBasis], + * check out the link above for more detail. + * + * Buliding on-top of {@link interpolateNumber}, `interpolateNumberIterator` interpolates between numbers, but unlike {@link interpolateNumber} + * `interpolateNumberIterator` is an iterator which uses an Array of `t` instances to yield the interpolated values + * + * @param itt_t Array of numbers (between 0 to 1) which each represent an instant of the interpolation + * @param values Array of numbers to interpolate between + * @param decimal How many decimals should the interpolated value have + * @return Iterator for interpolated numbers at different instances + * + * @source Source code of `interpolateNumberIterator` +*/ +export function* interpolateNumber(itt_t: Iterable, values: number[], decimal = 3) { + // nth index + const n = values.length - 1; + + for (const t of itt_t) { + // The current index given t + const i = limit(Math.floor(t * n), 0, n - 1); + + const start = values[i]; + const end = values[i + 1]; + const progress = (t - i / n) * n; + + yield toFixed(scale(progress, start, end), decimal); + } +} + +/** + * Given an iterable of items, find an item using `t` (which goes from 0 to 1), by + * using `t` to estimate the index of said value in the array of `values`, + * then expand that to encompass multiple `t`'s in an Array, + * which generates interpolated items items which each follow the interpolated index value + + * This is meant for interplolating strings that aren't number-like + + * @param itt_t Array of numbers (between 0 to 1) which each represent an instance of the interpolation + * @param values Array of items to choose from + * @return Iterator for Interpolated input Array items at different instances + + * @source Source code of `interpolateSequenceIterator` +*/ +export function* interpolateSequence( + itt_t: Iterable, + values: T[] +) { + // nth index + const n = values.length - 1; + + for (let t of itt_t) { + // limit `t`, to a min of 0 and a max of 1 + t = limit(t, 0, 1); + + // The current index given t + const i = Math.round(t * n); + yield values[i]; + } +} + +/** + * Alias of {@link interpolateSequence} + * @deprecated please use {@link interpolateSequence}, it's the same functionality but different name + */ +export const interpolateUsingIndex = interpolateSequence; + +/** + * Functions the same way {@link interpolateNumber} works. + * Convert strings to numbers, and then interpolates the numbers, + * at the end if there are units on the first value in the `values` array, + * it will use that unit for the interpolated result. + * Make sure to read {@link interpolateNumber}. + * + * @source Source code of `interpolateStringBatch` +*/ +export function* interpolateString( + itt_t: Iterable, + values: (string | number)[], + decimal = 3 +) { + let units = ""; + + // If the first value looks like a number with a unit + if (isNumberLike(values[0])) units = getUnit(values[0])[1]; + const iterator = interpolateNumber( + itt_t, + values.map(v => typeof v === "number" ? v : parseFloat(v)), + decimal + ); + for (const value of iterator) { + yield value + units; + } +} + +/** + * Iterator that interpolates all types of values including number, string, etc... values. + * Make sure to read {@link interpolateNumber}, {@link interpolateString} and {@link interpolateSequence}, + * as depending on the values given + * + * @source Source code of `interpolateComplexBatch` +*/ +export function* interpolateComplex( + itt_t: Iterable, + values: T[], + decimal = 3 +) { + let isNumber = true; + let isLikeNumber = true; + + let i = 0; + let v: T; + const len = values.length; + for (; i < len; i++) { + v = values[i]; + if (isNumber) isNumber = typeof v === "number"; + if (isLikeNumber) isLikeNumber = isNumberLike(v as string); + } + + // Interpolate numbers + if (isNumber) yield* interpolateNumber(itt_t, values as number[], decimal); + + // Interpolate strings with numbers, e.g. "5px" + if (isLikeNumber) + yield* interpolateString(itt_t, values as (number | string)[], decimal); + + // Interpolate pure strings and/or other type of values, e.g. "inherit", "solid", etc... + yield* interpolateSequence(itt_t, values); +} + +/** + * Generates an Array of values using frame functions which in turn create the effect of spring easing. + * To use this properly make sure to set the easing animation option to "linear". + * Check out a demo of SpringEasing at + * + * SpringEasing has 3 properties they are `easing` (all the easings from {@link EasingFunctions} are supported on top of frame functions like SpringFrame, SpringFrameOut, etc..), `numPoints` (the size of the Array the frame function should create), and `decimal` (the number of decimal places of the values within said Array). + * + * | Properties | Default Value | + * | ----------- | ----------------------- | + * | `easing` | `spring(1, 100, 10, 0)` | + * | `numPoints` | `50` | + * | `decimal` | `3` | + * + * By default, Spring Easing support easings in the form, + * + * | constant | accelerate | decelerate | accelerate-decelerate | decelerate-accelerate | + * | :--------- | :----------------- | :------------- | :-------------------- | :-------------------- | + * | | spring / spring-in | spring-out | spring-in-out | spring-out-in | + * + * All **Spring** easing's can be configured using theses parameters, + * + * `spring-*(mass, stiffness, damping, velocity)` + * + * Each parameter comes with these defaults + * + * | Parameter | Default Value | + * | --------- | ------------- | + * | mass | `1` | + * | stiffness | `100` | + * | damping | `10` | + * | velocity | `0` | + * + * e.g. + * ```ts + * import { SpringEasing, SpringOutFrame } from "spring-easing"; + * import anime from "animejs"; + * + * // Note: this is the return value of {@link SpringEasing} and {@link GenerateSpringFrames}, you don't need the object to get this format + * let [translateX, duration] = SpringEasing([0, 250], { + * easing: "spring-out-in(1, 100, 10, 0)", + * + * // You can change the size of Array for the SpringEasing function to generate + * numPoints: 200, + * + * // The number of decimal places to round, final values in the generated Array + * // This option doesn't exist on {@link GenerateSpringFrames} + * decimal: 5, + * }); + * + * anime({ + * targets: "div", + * + * // Using spring easing animate from [0 to 250] using `spring-out-in` + * translateX, + * + * // You can set the easing without an object + * rotate: SpringEasing(["0turn", 1, 0, 0.5], [SpringOutFrame, 1, 100, 10, 0])[0], + * + * // TIP... Use linear easing for the proper effect + * easing: "linear", + * + * // The optimal duration for this specific spring + * duration + * }) + * ``` + * + * @param values Values to animate between, e.g. `["50px", 60]` + * > _**Note**: You can interpolate with more than 2 values, but it's very confusing, so, it's best to choose 2_ + * @param options Accepts {@link TypeEasingOptions EasingOptions} or {@link TypeEasingOptions.easing array frame functions} + * @param interpolationFunction If you wish to use your own interpolation functions you may + * @return + * ```ts + * // An array of keyframes that represent said spring animation and + * // Total duration (in milliseconds) required to create a smooth spring animation + * [ + * [50, 55, 60, 70, 80, ...], + * 3500 + * ] + * ``` + */ +export function* SpringEasing( + values: T[], + options: TypeEasingOptions | TypeEasingOptions["easing"] = {}, + customInterpolate: IGenericInterpolationFn = interpolateNumber +) { + const optionsObj = EasingOptions(options); + const [frames, duration] = GenerateSpringFrames(optionsObj); + + yield [ + customInterpolate(frames, values, optionsObj.decimal), + duration + ]; +} + +export default SpringEasing; + diff --git a/src/utils.ts b/src/utils.ts index 98459a6..b0080b9 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -3,9 +3,9 @@ * * @source Source code of `isNumberLike` */ -export function isNumberLike(num: string | number) { - const value = parseFloat(num as string); - return typeof value == "number" && !Number.isNaN(value); +export function isNumberLike(input: T) { + const value = parseFloat(input as string); + return typeof value === "number" && !Number.isNaN(value); } /** @@ -45,15 +45,15 @@ export function toFixed(value: number, decimal: number) { * * @source Source code of `getUnit` */ -export function getUnit(str: string | number) { - const num = parseFloat(str as string); - return (str.toString()).replace(num.toString(), ""); -} +export function getUnit(input: string | number) { + if (typeof input === 'number') return [input, ""] as const; -/** - * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame - */ -export type TypeInterpolationFunction = (t: number, values: any[], decimal?: number) => string | number | any; + const [value, unit] = input.match(/(-?[\d.]+)([a-z%]*)/); + return [ + parseFloat(value), + unit + ] as const; +} /** * Converts old interpolation syntax (the instantaneous interpolation function, e.g. `(t, values, decimal) => { ... }`) From 60793d0b899dc570b8cf5b9bcbd996d1d78f1e84 Mon Sep 17 00:00:00 2001 From: Okiki Date: Tue, 7 Feb 2023 19:52:12 +0000 Subject: [PATCH 2/3] chore: fixed types --- src/interpolate/batch.ts | 20 +++++++++----------- tsconfig.json | 8 +++++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/interpolate/batch.ts b/src/interpolate/batch.ts index 8da039e..abd4f01 100644 --- a/src/interpolate/batch.ts +++ b/src/interpolate/batch.ts @@ -10,8 +10,8 @@ export * from "../index"; /** * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame */ -export interface IGenericInterpolationFn { - (arr_t: number[], values: T[], decimal?: number): TReturn[]; +export interface IGenericInterpolationFn { + (arr_t: number[], values: T, decimal?: number): TReturn; } /** @@ -249,18 +249,16 @@ export function interpolateComplex( * ] * ``` */ -export function SpringEasing( - values: T[], +export function SpringEasing( + values: T, options: TypeEasingOptions | TypeEasingOptions["easing"] = {}, - customInterpolate?: IGenericInterpolationFn + customInterpolate?: (arr_t: number[], values: T, decimal?: number) => TReturn ) { const optionsObj = EasingOptions(options); const [frames, duration] = GenerateSpringFrames(optionsObj); return [ - customInterpolate ? - interpolateNumber(frames, values, optionsObj.decimal) : - customInterpolate(frames, values, optionsObj.decimal), + customInterpolate?.(frames, values, optionsObj.decimal), duration ] as const; } @@ -268,10 +266,10 @@ export function SpringEasing( /** * The type for interpolation functions which at an instant in the animation, generate the corresponding interpolated frame */ -export interface IGenericInterpolationFn { - (arr_t: number[], values: T[], decimal?: number): TReturn[]; +export interface IGenericInterpolationFn { + (arr_t: number[], values: T, decimal?: number): TReturn; } -SpringEasing([21231,234,23423,"123123"], "spring", interpolateNumber) +SpringEasing<(number | string)[]>([21231,234,23423,"123123"], "spring", interpolateNumber) export default SpringEasing; diff --git a/tsconfig.json b/tsconfig.json index 73625e4..3218554 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,11 +12,13 @@ "resolveJsonModule": true, "isolatedModules": true, "esModuleInterop": true, - "skipLibCheck": true + "skipLibCheck": true, + "strict": true }, "include": [ - "src" -, "tests/utils/color-parse.ts" ], + "src", + "tests/utils/color-parse.ts" + ], "exclude": [ "node_modules" ] From 653c8fae01033d912831b7ae3d9fd2c3c0b3f5bf Mon Sep 17 00:00:00 2001 From: Okiki Date: Tue, 7 Feb 2023 20:07:37 +0000 Subject: [PATCH 3/3] types... --- src/interpolate/batch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interpolate/batch.ts b/src/interpolate/batch.ts index abd4f01..7ab3cd5 100644 --- a/src/interpolate/batch.ts +++ b/src/interpolate/batch.ts @@ -270,6 +270,6 @@ export interface IGenericInterpolationFn([21231,234,23423,"123123"], "spring", interpolateNumber) +SpringEasing([21231,234,23423], "spring", interpolateNumber) export default SpringEasing;