diff --git a/.env b/.env index ae7ac6e..86e2b46 100644 --- a/.env +++ b/.env @@ -1,7 +1,5 @@ -TARO_APP_API=https://yjx.dev.yaojiankang.top -#TARO_APP_API=https://mooc.yaojiankang.top +#TARO_APP_API=https://yjx.dev.yaojiankang.top +TARO_APP_API=https://mooc.yaojiankang.top #TARO_APP_API=https://shopfix.yaojiankang.top #TARO_APP_API=https://playedu.yaojiankang.top TARO_APP_LGOIN=true - - diff --git a/package.json b/package.json index d2525ab..c221015 100644 --- a/package.json +++ b/package.json @@ -54,9 +54,11 @@ "@tarojs/shared": "3.6.8", "@tarojs/taro": "3.6.8", "dayjs": "^1.11.9", + "marked": "^7.0.4", "react": "^18.0.0", "react-dom": "^18.0.0", "react-refresh": "^0.11.0", + "taro-ui": "^3.1.1", "unstated-next": "^1.1.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eae9f48..2b130cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,6 +53,9 @@ dependencies: dayjs: specifier: ^1.11.9 version: 1.11.9 + marked: + specifier: ^7.0.4 + version: 7.0.4 react: specifier: ^18.0.0 version: 18.0.0 @@ -62,6 +65,9 @@ dependencies: react-refresh: specifier: ^0.11.0 version: 0.11.0 + taro-ui: + specifier: ^3.1.1 + version: 3.1.1(@tarojs/components@3.6.8)(@tarojs/react@3.6.8)(@tarojs/taro@3.6.8)(react-dom@18.0.0)(react-native@0.72.4)(react@18.0.0) unstated-next: specifier: ^1.1.0 version: 1.1.0 @@ -219,7 +225,6 @@ packages: source-map: 0.5.7 transitivePeerDependencies: - supports-color - dev: true /@babel/eslint-parser@7.22.5(@babel/core@7.8.0)(eslint@8.12.0): resolution: {integrity: sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==} @@ -281,7 +286,6 @@ packages: browserslist: 4.21.9 lru-cache: 5.1.1 semver: 6.3.0 - dev: true /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} @@ -320,7 +324,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} @@ -343,7 +346,6 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.0 - dev: true /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.5): resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} @@ -374,7 +376,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} @@ -457,7 +458,6 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-replace-supers@7.22.5: resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} @@ -563,7 +563,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} @@ -586,7 +585,21 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.8.0) - dev: true + + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.22.5): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.8.0): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -601,7 +614,19 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.8.0): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -614,7 +639,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-proposal-decorators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==} @@ -647,6 +671,17 @@ packages: - supports-color dev: true + /@babel/plugin-proposal-export-default-from@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.5) + dev: false + /@babel/plugin-proposal-export-default-from@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==} engines: {node: '>=6.9.0'} @@ -656,7 +691,17 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.8.0) - dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + dev: false /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.8.0): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -667,7 +712,28 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.8.0) - dev: true + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + dev: false + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.8.0): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.8.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.8.0) + dev: false /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.5): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -694,7 +760,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.8.0) '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.8.0) - dev: true + + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + dev: false /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.8.0): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -705,7 +781,18 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.8.0) - dev: true + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.5): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + dev: false /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.8.0): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} @@ -717,7 +804,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.8.0) - dev: true /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} @@ -734,7 +820,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.8.0 - dev: true /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -755,7 +840,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -772,7 +856,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -789,7 +872,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -808,7 +890,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-decorators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==} @@ -844,7 +925,16 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-syntax-export-default-from@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-export-default-from@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==} @@ -854,7 +944,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -871,7 +960,16 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} @@ -881,7 +979,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} @@ -900,7 +997,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} @@ -919,7 +1015,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -936,7 +1031,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -953,7 +1047,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} @@ -972,7 +1065,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -989,7 +1081,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1006,7 +1097,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1023,7 +1113,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1040,7 +1129,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1057,7 +1145,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1074,7 +1161,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1093,7 +1179,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1112,7 +1197,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} @@ -1131,7 +1215,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} @@ -1152,7 +1235,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} @@ -1171,7 +1253,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} @@ -1200,7 +1281,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} @@ -1227,7 +1307,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} @@ -1246,7 +1325,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} @@ -1265,7 +1343,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} @@ -1290,7 +1367,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} @@ -1317,7 +1393,6 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-classes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} @@ -1356,7 +1431,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} @@ -1377,7 +1451,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.5 - dev: true /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} @@ -1396,7 +1469,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} @@ -1417,7 +1489,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} @@ -1436,7 +1507,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} @@ -1457,7 +1527,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} @@ -1478,7 +1547,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} @@ -1499,7 +1567,17 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.8.0) - dev: true + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + dev: false /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} @@ -1510,7 +1588,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} @@ -1529,7 +1606,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} @@ -1552,7 +1628,6 @@ packages: '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.8.0) '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} @@ -1573,7 +1648,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} @@ -1592,7 +1666,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} @@ -1613,7 +1686,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} @@ -1632,7 +1704,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} @@ -1657,7 +1728,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} @@ -1684,7 +1754,6 @@ packages: '@babel/helper-simple-access': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} @@ -1713,7 +1782,6 @@ packages: '@babel/helper-validator-identifier': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} @@ -1738,7 +1806,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} @@ -1759,7 +1826,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} @@ -1778,7 +1844,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} @@ -1799,7 +1864,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} @@ -1820,7 +1884,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} @@ -1847,7 +1910,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.8.0) '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} @@ -1872,7 +1934,6 @@ packages: '@babel/helper-replace-supers': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} @@ -1893,7 +1954,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} @@ -1916,7 +1976,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.8.0) - dev: true /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} @@ -1935,7 +1994,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} @@ -1960,7 +2018,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} @@ -1989,7 +2046,6 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} @@ -2008,7 +2064,16 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} @@ -2018,7 +2083,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} @@ -2030,6 +2094,16 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.8.0) dev: true + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} @@ -2038,7 +2112,16 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} @@ -2048,7 +2131,20 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/types': 7.22.5 + dev: false /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} @@ -2062,7 +2158,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.8.0) '@babel/types': 7.22.5 - dev: true /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} @@ -2094,7 +2189,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 - dev: true /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} @@ -2113,7 +2207,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-runtime@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==} @@ -2146,7 +2239,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} @@ -2165,7 +2257,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} @@ -2186,7 +2277,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} @@ -2205,7 +2295,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} @@ -2224,7 +2313,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} @@ -2243,7 +2331,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} @@ -2272,7 +2359,6 @@ packages: '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} @@ -2291,7 +2377,6 @@ packages: dependencies: '@babel/core': 7.8.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} @@ -2312,7 +2397,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} @@ -2333,7 +2417,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} @@ -2354,7 +2437,6 @@ packages: '@babel/core': 7.8.0 '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.8.0) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/preset-env@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} @@ -2535,7 +2617,18 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true + + /@babel/preset-flow@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) + dev: false /@babel/preset-modules@0.1.5(@babel/core@7.22.5): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -2560,7 +2653,6 @@ packages: '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.8.0) '@babel/types': 7.22.5 esutils: 2.0.3 - dev: true /@babel/preset-react@7.22.5(@babel/core@7.8.0): resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} @@ -2802,6 +2894,76 @@ packages: wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true + /@jest/create-cache-key-function@29.6.3: + resolution: {integrity: sha512-kzSK9XAxtD1kRPJKxsmD0YKw2fyXveP+5ikeQkCYCHeacWW1EGYMTgjDIM/Di4Uhttx7lnHwrNpz2xn+0rTp8g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + dev: false + + /@jest/environment@29.6.4: + resolution: {integrity: sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + jest-mock: 29.6.3 + dev: false + + /@jest/fake-timers@29.6.4: + resolution: {integrity: sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.15.11 + jest-message-util: 29.6.3 + jest-mock: 29.6.3 + jest-util: 29.6.3 + dev: false + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: false + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.15.11 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + dev: false + + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.15.11 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + dev: false + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.15.11 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: false + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -2927,6 +3089,233 @@ packages: source-map: 0.7.4 webpack: 5.78.0(@swc/core@1.3.23) + /@react-native-community/cli-clean@11.3.6: + resolution: {integrity: sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + prompts: 2.4.2 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-config@11.3.6: + resolution: {integrity: sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + cosmiconfig: 5.2.1 + deepmerge: 4.3.1 + glob: 7.2.3 + joi: 17.9.2 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-debugger-ui@11.3.6: + resolution: {integrity: sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==} + dependencies: + serve-static: 1.15.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@react-native-community/cli-doctor@11.3.6: + resolution: {integrity: sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==} + dependencies: + '@react-native-community/cli-config': 11.3.6 + '@react-native-community/cli-platform-android': 11.3.6 + '@react-native-community/cli-platform-ios': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + command-exists: 1.2.9 + envinfo: 7.10.0 + execa: 5.1.1 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + node-stream-zip: 1.15.0 + ora: 5.4.1 + prompts: 2.4.2 + semver: 7.5.3 + strip-ansi: 5.2.0 + sudo-prompt: 9.2.1 + wcwidth: 1.0.1 + yaml: 2.3.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-hermes@11.3.6: + resolution: {integrity: sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==} + dependencies: + '@react-native-community/cli-platform-android': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-platform-android@11.3.6: + resolution: {integrity: sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + glob: 7.2.3 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-platform-ios@11.3.6: + resolution: {integrity: sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + fast-xml-parser: 4.2.7 + glob: 7.2.3 + ora: 5.4.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-plugin-metro@11.3.6(@babel/core@7.8.0): + resolution: {integrity: sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==} + dependencies: + '@react-native-community/cli-server-api': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.76.7 + metro-config: 0.76.7 + metro-core: 0.76.7 + metro-react-native-babel-transformer: 0.76.7(@babel/core@7.8.0) + metro-resolver: 0.76.7 + metro-runtime: 0.76.7 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native-community/cli-server-api@11.3.6: + resolution: {integrity: sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==} + dependencies: + '@react-native-community/cli-debugger-ui': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native-community/cli-tools@11.3.6: + resolution: {integrity: sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + find-up: 5.0.0 + mime: 2.5.2 + node-fetch: 2.7.0 + open: 6.4.0 + ora: 5.4.1 + semver: 7.5.3 + shell-quote: 1.8.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-types@11.3.6: + resolution: {integrity: sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==} + dependencies: + joi: 17.9.2 + dev: false + + /@react-native-community/cli@11.3.6(@babel/core@7.8.0): + resolution: {integrity: sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@react-native-community/cli-clean': 11.3.6 + '@react-native-community/cli-config': 11.3.6 + '@react-native-community/cli-debugger-ui': 11.3.6 + '@react-native-community/cli-doctor': 11.3.6 + '@react-native-community/cli-hermes': 11.3.6 + '@react-native-community/cli-plugin-metro': 11.3.6(@babel/core@7.8.0) + '@react-native-community/cli-server-api': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + '@react-native-community/cli-types': 11.3.6 + chalk: 4.1.2 + commander: 9.5.0 + execa: 5.1.1 + find-up: 4.1.0 + fs-extra: 8.1.0 + graceful-fs: 4.2.11 + prompts: 2.4.2 + semver: 7.5.3 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native/assets-registry@0.72.0: + resolution: {integrity: sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==} + dev: false + + /@react-native/codegen@0.72.6(@babel/preset-env@7.22.5): + resolution: {integrity: sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==} + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/parser': 7.22.5 + '@babel/preset-env': 7.22.5(@babel/core@7.8.0) + flow-parser: 0.206.0 + jscodeshift: 0.14.0(@babel/preset-env@7.22.5) + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@react-native/gradle-plugin@0.72.11: + resolution: {integrity: sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==} + dev: false + + /@react-native/js-polyfills@0.72.1: + resolution: {integrity: sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==} + dev: false + + /@react-native/normalize-colors@0.72.0: + resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} + dev: false + + /@react-native/virtualized-lists@0.72.8(react-native@0.72.4): + resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + peerDependencies: + react-native: '*' + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react-native: 0.72.4(@babel/core@7.8.0)(@babel/preset-env@7.22.5)(react@18.0.0) + dev: false + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -2938,6 +3327,10 @@ packages: /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: false + /@sindresorhus/is@0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} @@ -2948,6 +3341,18 @@ packages: engines: {node: '>=4'} dev: true + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: false + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: false + /@stencil/core@2.22.3: resolution: {integrity: sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==} engines: {node: '>=12.10.0', npm: '>=6.0.0'} @@ -3973,6 +4378,22 @@ packages: '@types/node': 18.15.11 dev: true + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: false + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: false + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: false + /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} @@ -4135,6 +4556,10 @@ packages: '@types/node': 18.15.11 dev: true + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: false + /@types/vinyl@2.0.7: resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} dependencies: @@ -4152,6 +4577,28 @@ packages: '@types/node': 18.15.11 dev: true + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: false + + /@types/yargs@15.0.15: + resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: false + + /@types/yargs@16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: false + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: false + /@typescript-eslint/eslint-plugin@5.20.0(@typescript-eslint/parser@5.20.0)(eslint@8.12.0)(typescript@4.1.2): resolution: {integrity: sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4500,6 +4947,13 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + /abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} dev: false @@ -4510,7 +4964,6 @@ packages: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: true /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -4622,6 +5075,10 @@ packages: uri-js: 4.4.1 dev: true + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + dev: false + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -4634,11 +5091,24 @@ packages: dependencies: type-fest: 0.21.3 + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + dependencies: + colorette: 1.4.0 + slice-ansi: 2.1.0 + strip-ansi: 5.2.0 + dev: false + /ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} hasBin: true + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4660,6 +5130,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: false + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -4676,6 +5151,10 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + dev: false + /archive-type@4.0.0: resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} engines: {node: '>=4'} @@ -4695,7 +5174,6 @@ packages: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -4752,6 +5230,10 @@ packages: engines: {node: '>=8'} dev: true + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -4763,11 +5245,27 @@ packages: engines: {node: '>=0.8'} dev: true + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.0 + dev: false + + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: false + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false + /async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: @@ -4776,7 +5274,6 @@ packages: /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -4814,6 +5311,14 @@ packages: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: true + /babel-core@7.0.0-bridge.0(@babel/core@7.22.5): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + dev: false + /babel-helper-evaluate-path@0.5.0: resolution: {integrity: sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==} dev: true @@ -4896,7 +5401,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.5): resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} @@ -4919,7 +5423,6 @@ packages: core-js-compat: 3.31.0 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.5): resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} @@ -4940,7 +5443,26 @@ packages: '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.8.0) transitivePeerDependencies: - supports-color - dev: true + + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + dev: false + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.22.5): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + transitivePeerDependencies: + - '@babel/core' + dev: false + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.8.0): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.8.0) + transitivePeerDependencies: + - '@babel/core' + dev: false /babel-plugin-transform-imports-api@1.0.0: resolution: {integrity: sha512-EtPFtwUFwXy4HyRwXiR7dCijk2b1dd12bVs39oY8aMZUnypFEMrctGX6/YrhQzhCPFweV7NTPhc+fD4zItWzUA==} @@ -4962,40 +5484,113 @@ packages: lodash: 4.17.21 dev: false - /babel-preset-taro@3.6.8(@babel/core@7.8.0): - resolution: {integrity: sha512-TQXLwtzK3PhePe7NNjytsP+pstfuoFXjsEMWEuq2FdMRBT0YctXI5d0zUFpuY1pDXn2IQeXjJEt1almUmZBbuQ==} + /babel-preset-fbjs@3.4.0(@babel/core@7.22.5): + resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: - '@babel/core': '*' + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.8.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.8.0) - '@babel/plugin-proposal-decorators': 7.22.5(@babel/core@7.8.0) - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.8.0) - '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.8.0) - '@babel/preset-env': 7.22.5(@babel/core@7.8.0) - '@babel/preset-react': 7.22.5(@babel/core@7.8.0) - '@babel/preset-typescript': 7.22.5(@babel/core@7.8.0) - '@babel/runtime': 7.22.5 - '@babel/runtime-corejs3': 7.22.5 - '@tarojs/helper': 3.6.8 - '@tarojs/shared': 3.6.8 - babel-plugin-dynamic-import-node: 2.3.3 - babel-plugin-global-define: 1.0.3 - babel-plugin-jsx-attributes-array-to-object: 0.3.0 - babel-plugin-minify-dead-code-elimination: 0.5.2 - babel-plugin-transform-imports-api: 1.0.0 - babel-plugin-transform-react-jsx-to-rn-stylesheet: 3.6.8 - core-js: 3.31.0 - lodash: 4.17.21 - metro-react-native-babel-preset: 0.72.4(@babel/core@7.8.0) - react-refresh: 0.11.0 + '@babel/core': 7.22.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.5) + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-preset-fbjs@3.4.0(@babel/core@7.8.0): + resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.8.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.8.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.8.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.8.0) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.8.0) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.8.0) + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-preset-taro@3.6.8(@babel/core@7.8.0): + resolution: {integrity: sha512-TQXLwtzK3PhePe7NNjytsP+pstfuoFXjsEMWEuq2FdMRBT0YctXI5d0zUFpuY1pDXn2IQeXjJEt1almUmZBbuQ==} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.8.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.8.0) + '@babel/plugin-proposal-decorators': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.8.0) + '@babel/preset-env': 7.22.5(@babel/core@7.8.0) + '@babel/preset-react': 7.22.5(@babel/core@7.8.0) + '@babel/preset-typescript': 7.22.5(@babel/core@7.8.0) + '@babel/runtime': 7.22.5 + '@babel/runtime-corejs3': 7.22.5 + '@tarojs/helper': 3.6.8 + '@tarojs/shared': 3.6.8 + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-global-define: 1.0.3 + babel-plugin-jsx-attributes-array-to-object: 0.3.0 + babel-plugin-minify-dead-code-elimination: 0.5.2 + babel-plugin-transform-imports-api: 1.0.0 + babel-plugin-transform-react-jsx-to-rn-stylesheet: 3.6.8 + core-js: 3.31.0 + lodash: 4.17.21 + metro-react-native-babel-preset: 0.72.4(@babel/core@7.8.0) + react-refresh: 0.11.0 transitivePeerDependencies: - supports-color dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /balanced-match@2.0.0: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} @@ -5098,7 +5693,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -5122,6 +5716,12 @@ packages: node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.9) + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: false + /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} dev: true @@ -5162,7 +5762,6 @@ packages: /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} - dev: true /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -5201,6 +5800,20 @@ packages: get-intrinsic: 1.2.1 dev: true + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + dev: false + + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + dev: false + /callsite-record@4.1.5: resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} dependencies: @@ -5217,6 +5830,11 @@ packages: resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} dev: true + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: false + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -5247,12 +5865,10 @@ packages: /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - dev: true /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: true /camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} @@ -5359,7 +5975,11 @@ packages: /ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: false /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} @@ -5416,6 +6036,14 @@ packages: engines: {node: '>= 10'} dev: true + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -5424,6 +6052,15 @@ packages: wrap-ansi: 7.0.0 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 + wrap-ansi: 7.0.0 + dev: false + /clone-buffer@1.0.0: resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} engines: {node: '>= 0.10'} @@ -5503,6 +6140,10 @@ packages: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: true + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true @@ -5514,6 +6155,14 @@ packages: delayed-stream: 1.0.0 dev: true + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: false + + /commander@2.13.0: + resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -5532,6 +6181,11 @@ packages: engines: {node: '>= 12'} dev: true + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -5543,7 +6197,6 @@ packages: engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} @@ -5558,11 +6211,9 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: true /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -5588,6 +6239,18 @@ packages: engines: {node: '>=0.8'} dev: true + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /consola@2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} dev: true @@ -5842,7 +6505,16 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true + + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + dev: false /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} @@ -6133,7 +6805,6 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: true /debug@3.1.0: resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} @@ -6179,7 +6850,6 @@ packages: /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - dev: true /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -6274,6 +6944,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -6322,6 +6997,10 @@ packages: engines: {node: '>=0.4.0'} dev: true + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + dev: false + /depcheck@1.4.3: resolution: {integrity: sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ==} engines: {node: '>=10'} @@ -6362,7 +7041,14 @@ packages: /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dev: true + + /deprecated-react-native-prop-types@4.1.0: + resolution: {integrity: sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==} + dependencies: + '@react-native/normalize-colors': 0.72.0 + invariant: 2.2.4 + prop-types: 15.8.1 + dev: false /deps-regex@0.1.4: resolution: {integrity: sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA==} @@ -6371,7 +7057,6 @@ packages: /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} @@ -6560,7 +7245,6 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true /ejs@3.1.9: resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} @@ -6575,7 +7259,6 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -6588,7 +7271,6 @@ packages: /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} - dev: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -6616,7 +7298,6 @@ packages: resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} engines: {node: '>=4'} hasBin: true - dev: true /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} @@ -6631,13 +7312,20 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true /error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + dependencies: + accepts: 1.3.8 + escape-html: 1.0.3 + dev: false + /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} @@ -6916,12 +7604,16 @@ packages: /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: false + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -7183,7 +7875,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -7217,7 +7908,11 @@ packages: /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - dev: true + + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -7240,7 +7935,6 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true /execall@2.0.0: resolution: {integrity: sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==} @@ -7346,6 +8040,13 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-xml-parser@4.2.7: + resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -7364,6 +8065,12 @@ packages: websocket-driver: 0.7.4 dev: true + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: false + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: @@ -7449,6 +8156,21 @@ packages: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -7491,7 +8213,6 @@ packages: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -7531,6 +8252,15 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /flow-enums-runtime@0.0.5: + resolution: {integrity: sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==} + dev: false + + /flow-parser@0.206.0: + resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + engines: {node: '>=0.4.0'} + dev: false + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -7585,7 +8315,6 @@ packages: /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - dev: true /from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} @@ -7612,7 +8341,6 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -7649,7 +8377,6 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} @@ -7702,7 +8429,6 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -7764,7 +8490,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -7993,6 +8718,23 @@ packages: tslib: 2.6.0 dev: false + /hermes-estree@0.12.0: + resolution: {integrity: sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==} + dev: false + + /hermes-parser@0.12.0: + resolution: {integrity: sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==} + dependencies: + hermes-estree: 0.12.0 + dev: false + + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + dependencies: + source-map: 0.7.4 + dev: false + /highlight-es@1.0.3: resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} dependencies: @@ -8130,7 +8872,6 @@ packages: setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: true /http-parser-js@0.5.8: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} @@ -8199,7 +8940,6 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - dev: true /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -8247,10 +8987,26 @@ packages: dev: true optional: true + /image-size@1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + queue: 6.0.2 + dev: false + /immutable@4.3.0: resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} dev: true + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -8272,7 +9028,6 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: true /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} @@ -8284,7 +9039,6 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -8366,11 +9120,9 @@ packages: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - dev: true /ip@1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: true /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} @@ -8400,7 +9152,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -8450,6 +9201,11 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: false + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -8464,10 +9220,14 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: false + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -8593,7 +9353,6 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -8642,6 +9401,11 @@ packages: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: true + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -8655,7 +9419,6 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true /isbinaryfile@5.0.0: resolution: {integrity: sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==} @@ -8713,13 +9476,95 @@ packages: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} dev: true - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /jest-environment-node@29.6.4: + resolution: {integrity: sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@jest/environment': 29.6.4 + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 '@types/node': 18.15.11 - merge-stream: 2.0.0 - supports-color: 8.1.1 + jest-mock: 29.6.3 + jest-util: 29.6.3 + dev: false + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false + + /jest-message-util@29.6.3: + resolution: {integrity: sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.6.3 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: false + + /jest-mock@29.6.3: + resolution: {integrity: sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + jest-util: 29.6.3 + dev: false + + /jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: false + + /jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.15.11 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: false + + /jest-util@29.6.3: + resolution: {integrity: sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: false + + /jest-validate@29.6.3: + resolution: {integrity: sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.6.3 + dev: false + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.15.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 /jiti@1.18.2: resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} @@ -8753,7 +9598,6 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -8766,6 +9610,44 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + dev: false + + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + dev: false + + /jscodeshift@0.14.0(@babel/preset-env@7.22.5): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/preset-env': 7.22.5(@babel/core@7.8.0) + '@babel/preset-flow': 7.22.5(@babel/core@7.22.5) + '@babel/preset-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/register': 7.22.5(@babel/core@7.22.5) + babel-core: 7.0.0-bridge.0(@babel/core@7.22.5) + chalk: 4.1.2 + flow-parser: 0.206.0 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false + /jsdom@21.1.2: resolution: {integrity: sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==} engines: {node: '>=14'} @@ -8820,6 +9702,10 @@ packages: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: true + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -8902,7 +9788,6 @@ packages: /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - dev: true /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} @@ -8969,6 +9854,11 @@ packages: - supports-color dev: true + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: false + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} @@ -9143,7 +10033,6 @@ packages: engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - dev: true /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -9168,6 +10057,10 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false + /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true @@ -9186,6 +10079,15 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + dependencies: + ansi-fragments: 0.2.1 + dayjs: 1.11.9 + yargs: 15.4.1 + dev: false + /loglevel-plugin-prefix@0.8.4: resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} dev: true @@ -9247,7 +10149,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /magic-string@0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} @@ -9281,6 +10182,12 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: false + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -9291,6 +10198,12 @@ packages: engines: {node: '>=8'} dev: true + /marked@7.0.4: + resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} + engines: {node: '>= 16'} + hasBin: true + dev: false + /mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} dev: true @@ -9359,6 +10272,10 @@ packages: fs-monkey: 1.0.4 dev: true + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + dev: false + /memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} @@ -9403,6 +10320,109 @@ packages: engines: {node: '>= 0.6'} dev: true + /metro-babel-transformer@0.76.7: + resolution: {integrity: sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.5 + hermes-parser: 0.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-cache-key@0.76.7: + resolution: {integrity: sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==} + engines: {node: '>=16'} + dev: false + + /metro-cache@0.76.7: + resolution: {integrity: sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==} + engines: {node: '>=16'} + dependencies: + metro-core: 0.76.7 + rimraf: 3.0.2 + dev: false + + /metro-config@0.76.7: + resolution: {integrity: sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==} + engines: {node: '>=16'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + jest-validate: 29.6.3 + metro: 0.76.7 + metro-cache: 0.76.7 + metro-core: 0.76.7 + metro-runtime: 0.76.7 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro-core@0.76.7: + resolution: {integrity: sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==} + engines: {node: '>=16'} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.76.7 + dev: false + + /metro-file-map@0.76.7: + resolution: {integrity: sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==} + engines: {node: '>=16'} + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-inspector-proxy@0.76.7: + resolution: {integrity: sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==} + engines: {node: '>=16'} + hasBin: true + dependencies: + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.7.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro-minify-terser@0.76.7: + resolution: {integrity: sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==} + engines: {node: '>=16'} + dependencies: + terser: 5.18.2 + dev: false + + /metro-minify-uglify@0.76.7: + resolution: {integrity: sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==} + engines: {node: '>=16'} + dependencies: + uglify-es: 3.3.9 + dev: false + /metro-react-native-babel-preset@0.72.4(@babel/core@7.8.0): resolution: {integrity: sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==} peerDependencies: @@ -9451,6 +10471,298 @@ packages: - supports-color dev: true + /metro-react-native-babel-preset@0.76.7(@babel/core@7.22.5): + resolution: {integrity: sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.22.5 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.22.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-export-default-from': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.5) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.5) + '@babel/template': 7.22.5 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.22.5) + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-react-native-babel-preset@0.76.7(@babel/core@7.8.0): + resolution: {integrity: sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.8.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.8.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.8.0) + '@babel/plugin-proposal-export-default-from': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.8.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.8.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.8.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.8.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.8.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.8.0) + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.8.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.8.0) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.8.0) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.8.0) + '@babel/template': 7.22.5 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.8.0) + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-react-native-babel-transformer@0.76.7(@babel/core@7.8.0): + resolution: {integrity: sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.8.0 + babel-preset-fbjs: 3.4.0(@babel/core@7.8.0) + hermes-parser: 0.12.0 + metro-react-native-babel-preset: 0.76.7(@babel/core@7.8.0) + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-resolver@0.76.7: + resolution: {integrity: sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==} + engines: {node: '>=16'} + dev: false + + /metro-runtime@0.76.7: + resolution: {integrity: sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==} + engines: {node: '>=16'} + dependencies: + '@babel/runtime': 7.22.5 + react-refresh: 0.4.3 + dev: false + + /metro-runtime@0.76.8: + resolution: {integrity: sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==} + engines: {node: '>=16'} + dependencies: + '@babel/runtime': 7.22.5 + react-refresh: 0.4.3 + dev: false + + /metro-source-map@0.76.7: + resolution: {integrity: sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==} + engines: {node: '>=16'} + dependencies: + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + invariant: 2.2.4 + metro-symbolicate: 0.76.7 + nullthrows: 1.1.1 + ob1: 0.76.7 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-source-map@0.76.8: + resolution: {integrity: sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==} + engines: {node: '>=16'} + dependencies: + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + invariant: 2.2.4 + metro-symbolicate: 0.76.8 + nullthrows: 1.1.1 + ob1: 0.76.8 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-symbolicate@0.76.7: + resolution: {integrity: sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.76.7 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-symbolicate@0.76.8: + resolution: {integrity: sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==} + engines: {node: '>=16'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.76.8 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-plugins@0.76.7: + resolution: {integrity: sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-worker@0.76.7: + resolution: {integrity: sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.5) + metro: 0.76.7 + metro-babel-transformer: 0.76.7 + metro-cache: 0.76.7 + metro-cache-key: 0.76.7 + metro-source-map: 0.76.7 + metro-transform-plugins: 0.76.7 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro@0.76.7: + resolution: {integrity: sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + accepts: 1.3.8 + async: 3.2.4 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.11 + hermes-parser: 0.12.0 + image-size: 1.0.2 + invariant: 2.2.4 + jest-worker: 27.5.1 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.76.7 + metro-cache: 0.76.7 + metro-cache-key: 0.76.7 + metro-config: 0.76.7 + metro-core: 0.76.7 + metro-file-map: 0.76.7 + metro-inspector-proxy: 0.76.7 + metro-minify-terser: 0.76.7 + metro-minify-uglify: 0.76.7 + metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.5) + metro-resolver: 0.76.7 + metro-runtime: 0.76.7 + metro-source-map: 0.76.7 + metro-symbolicate: 0.76.7 + metro-transform-plugins: 0.76.7 + metro-transform-worker: 0.76.7 + mime-types: 2.1.35 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -9472,13 +10784,11 @@ packages: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true - dev: true /mime@2.5.2: resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} engines: {node: '>=4.0.0'} hasBin: true - dev: true /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -9518,7 +10828,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} @@ -9552,7 +10861,6 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true /minipass@6.0.2: resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} @@ -9589,7 +10897,6 @@ packages: hasBin: true dependencies: minimist: 1.2.8 - dev: true /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} @@ -9602,14 +10909,12 @@ packages: /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true /multicast-dns-service-types@1.1.0: resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} @@ -9678,7 +10983,6 @@ packages: /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - dev: true /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -9695,20 +10999,57 @@ packages: lower-case: 2.0.2 tslib: 2.6.0 + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + dev: false + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false + + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + dev: false + /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 dev: true + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} dev: true + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: false + /node-releases@2.0.12: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + dev: false + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -9809,7 +11150,6 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -9817,6 +11157,10 @@ packages: boolbase: 1.0.0 dev: true + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: false + /num2fraction@1.2.2: resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} dev: true @@ -9829,6 +11173,16 @@ packages: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true + /ob1@0.76.7: + resolution: {integrity: sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==} + engines: {node: '>=16'} + dev: false + + /ob1@0.76.8: + resolution: {integrity: sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==} + engines: {node: '>=16'} + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9864,23 +11218,27 @@ packages: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - dev: true /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} - dev: true /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -9888,6 +11246,13 @@ packages: dependencies: mimic-fn: 2.1.0 + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + dev: false + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -10004,7 +11369,6 @@ packages: engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -10079,6 +11443,14 @@ packages: error-ex: 1.3.2 dev: true + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -10117,7 +11489,6 @@ packages: /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - dev: true /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -10143,7 +11514,6 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -10753,6 +12123,25 @@ packages: renderkid: 3.0.0 dev: true + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + dev: false + + /pretty-format@29.6.3: + resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: false + /pretty-time@1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} @@ -10760,18 +12149,30 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true /promise-polyfill@7.1.2: resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: false + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: false + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: true /property-expr@2.0.5: resolution: {integrity: sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==} @@ -10865,6 +12266,12 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: false + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} @@ -10878,7 +12285,6 @@ packages: /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - dev: true /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -10911,6 +12317,16 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-devtools-core@4.28.0: + resolution: {integrity: sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==} + dependencies: + shell-quote: 1.8.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /react-dom@18.0.0(react@18.0.0): resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==} peerDependencies: @@ -10922,7 +12338,85 @@ packages: /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: false + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: false + + /react-native-animatable@1.3.3: + resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==} + dependencies: + prop-types: 15.8.1 + dev: false + + /react-native-modal@13.0.1(react-native@0.72.4)(react@18.0.0): + resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==} + peerDependencies: + react: '*' + react-native: '>=0.65.0' + dependencies: + prop-types: 15.8.1 + react: 18.0.0 + react-native: 0.72.4(@babel/core@7.8.0)(@babel/preset-env@7.22.5)(react@18.0.0) + react-native-animatable: 1.3.3 + dev: false + + /react-native@0.72.4(@babel/core@7.8.0)(@babel/preset-env@7.22.5)(react@18.0.0): + resolution: {integrity: sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + react: 18.2.0 + dependencies: + '@jest/create-cache-key-function': 29.6.3 + '@react-native-community/cli': 11.3.6(@babel/core@7.8.0) + '@react-native-community/cli-platform-android': 11.3.6 + '@react-native-community/cli-platform-ios': 11.3.6 + '@react-native/assets-registry': 0.72.0 + '@react-native/codegen': 0.72.6(@babel/preset-env@7.22.5) + '@react-native/gradle-plugin': 0.72.11 + '@react-native/js-polyfills': 0.72.1 + '@react-native/normalize-colors': 0.72.0 + '@react-native/virtualized-lists': 0.72.8(react-native@0.72.4) + abort-controller: 3.0.0 + anser: 1.4.10 + base64-js: 1.5.1 + deprecated-react-native-prop-types: 4.1.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.5 + invariant: 2.2.4 + jest-environment-node: 29.6.4 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.76.8 + metro-source-map: 0.76.8 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 18.0.0 + react-devtools-core: 4.28.0 + react-refresh: 0.4.3 + react-shallow-renderer: 16.15.0(react@18.0.0) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + use-sync-external-store: 1.2.0(react@18.0.0) + whatwg-fetch: 3.6.2 + ws: 6.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false /react-reconciler@0.27.0(react@18.0.0): resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==} @@ -10942,7 +12436,16 @@ packages: /react-refresh@0.4.3: resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} engines: {node: '>=0.10.0'} - dev: true + + /react-shallow-renderer@16.15.0(react@18.0.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + object-assign: 4.1.1 + react: 18.0.0 + react-is: 18.2.0 + dev: false /react@18.0.0: resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} @@ -11002,7 +12505,6 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: true /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -11018,6 +12520,20 @@ packages: dependencies: picomatch: 2.3.1 + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + dev: false + + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.15.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.0 + dev: false + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -11150,12 +12666,15 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false + /require-package-name@2.0.1: resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} dev: true @@ -11164,6 +12683,11 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: false + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -11219,6 +12743,13 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true @@ -11231,7 +12762,6 @@ packages: hasBin: true dependencies: glob: 7.2.3 - dev: true /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -11263,7 +12793,6 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -11338,6 +12867,12 @@ packages: dependencies: loose-envify: 1.4.0 + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + dependencies: + loose-envify: 1.4.0 + dev: false + /schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} engines: {node: '>= 8.9.0'} @@ -11440,7 +12975,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -11461,7 +12995,6 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color - dev: true /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -11471,6 +13004,11 @@ packages: upper-case-first: 2.0.2 dev: false + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + dev: false + /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: @@ -11501,7 +13039,10 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color - dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} @@ -11509,7 +13050,6 @@ packages: /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} @@ -11527,6 +13067,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -11543,16 +13087,28 @@ packages: engines: {node: '>=14'} dev: true + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: false + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -11623,7 +13179,6 @@ packages: /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} - dev: true /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -11692,7 +13247,6 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true /sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} @@ -11718,18 +13272,30 @@ packages: deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: true + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: false + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: false + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - dev: true /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - dev: true /std-env@3.3.3: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} @@ -11751,7 +13317,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -11795,13 +13360,19 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11851,7 +13422,6 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -11877,6 +13447,10 @@ packages: escape-string-regexp: 1.0.5 dev: true + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + /style-loader@1.3.0(webpack@5.78.0): resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} engines: {node: '>= 8.9.0'} @@ -11992,6 +13566,10 @@ packages: - supports-color dev: true + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + dev: false + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -12093,6 +13671,36 @@ packages: postcss-value-parser: 3.3.1 dev: true + /taro-ui@3.1.1(@tarojs/components@3.6.8)(@tarojs/react@3.6.8)(@tarojs/taro@3.6.8)(react-dom@18.0.0)(react-native@0.72.4)(react@18.0.0): + resolution: {integrity: sha512-mbVeBhguyVPr+FLyrlT+ABnpQIuqRB/xpKKZxbnpaCg8W2RDM7CKQW7VPehfzqD+jW57X21b0bcD2ALYBhQSQg==} + peerDependencies: + '@tarojs/components': '>=3' + '@tarojs/react': '>=3' + '@tarojs/taro': '>=3' + react: '>=16.13.0' + react-dom: '>=16.13.0' + react-native: '>=0.62.0' + dependencies: + '@tarojs/components': 3.6.8(@types/react@18.0.0)(react@18.0.0) + '@tarojs/react': 3.6.8(react@18.0.0) + '@tarojs/taro': 3.6.8(@types/react@18.0.0) + classnames: 2.3.2 + dayjs: 1.11.9 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + react-native: 0.72.4(@babel/core@7.8.0)(@babel/preset-env@7.22.5)(react@18.0.0) + react-native-modal: 13.0.1(react-native@0.72.4)(react@18.0.0) + dev: false + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + dev: false + /terser-webpack-plugin@5.3.9(@swc/core@1.3.23)(esbuild@0.14.54)(webpack@5.78.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -12150,10 +13758,21 @@ packages: any-promise: 1.3.0 dev: true + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: false + /throat@6.0.2: resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} dev: true + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: false + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -12178,6 +13797,10 @@ packages: os-tmpdir: 1.0.2 dev: true + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: false + /to-buffer@1.1.1: resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} dev: true @@ -12200,7 +13823,6 @@ packages: /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - dev: true /toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} @@ -12224,6 +13846,10 @@ packages: url-parse: 1.5.10 dev: true + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + /tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} @@ -12316,6 +13942,11 @@ packages: prelude-ls: 1.2.1 dev: true + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: false + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -12335,6 +13966,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -12373,6 +14009,16 @@ packages: hasBin: true dev: true + /uglify-es@3.3.9: + resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} + engines: {node: '>=0.8.0'} + deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 + hasBin: true + dependencies: + commander: 2.13.0 + source-map: 0.6.1 + dev: false + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -12444,7 +14090,6 @@ packages: /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - dev: true /unstated-next@1.1.0: resolution: {integrity: sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA==} @@ -12537,6 +14182,14 @@ packages: engines: {node: '>= 4'} dev: true + /use-sync-external-store@1.2.0(react@18.0.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.0.0 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -12547,7 +14200,6 @@ packages: /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - dev: true /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} @@ -12585,7 +14237,6 @@ packages: /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - dev: true /verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} @@ -12619,6 +14270,10 @@ packages: replace-ext: 1.0.1 dev: true + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + dev: false + /vm2@3.9.19: resolution: {integrity: sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==} engines: {node: '>=6.0'} @@ -12729,6 +14384,12 @@ packages: xml-name-validator: 4.0.0 dev: true + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: false + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -12747,6 +14408,10 @@ packages: dependencies: defaults: 1.0.4 + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -12944,6 +14609,13 @@ packages: webidl-conversions: 7.0.0 dev: true + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -12954,6 +14626,10 @@ packages: is-symbol: 1.0.4 dev: true + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false + /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} @@ -13000,6 +14676,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -13007,7 +14692,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -13020,7 +14704,14 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true + + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: false /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -13039,6 +14730,33 @@ packages: signal-exit: 3.0.7 dev: true + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: false + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} @@ -13082,7 +14800,6 @@ packages: /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - dev: true /xxhashjs@0.2.2: resolution: {integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==} @@ -13090,10 +14807,13 @@ packages: cuint: 0.2.2 dev: true + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -13104,18 +14824,52 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: true + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + dev: false + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: false + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: false + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -13129,6 +14883,19 @@ packages: yargs-parser: 20.2.9 dev: true + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + 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: 21.1.1 + dev: false + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: diff --git a/src/api/brand.ts b/src/api/brand.ts index 4e636c3..12a129e 100644 --- a/src/api/brand.ts +++ b/src/api/brand.ts @@ -5,7 +5,7 @@ export type BrandRecord = { name: string; id: number introductory_video: string - brand_album: string[] + brand_album: string graphic_introduction: string disabled: number introductory_video_resource:any @@ -21,7 +21,7 @@ export const brandApi = { /** 品牌列表 */ list(page: number , page_size: number) { return request<{ - data: BrandRecord[], + list: BrandRecord[], total: number }>(`/home/v1/brand/list?page=${page}&page_size=${page_size}` , "GET") }, @@ -30,11 +30,11 @@ export const brandApi = { return request(`/home/v1/brand/${id}`, "GET") }, /** 文章列表 */ - articleList(owner_id: number ) { + articleList(owner_id: number,page:number) { return request<{ list: ArticleRecord[], total: number - }>(`/home/v1/article/list?owner_id=${owner_id}&page=1&page_size=1000` , "GET") + }>(`/home/v1/article/list?owner_id=${owner_id}&page=${page}&page_size=10` , "GET") }, articleInfo(id: number ) { return request(`/home/v1/article/${id}` , "GET") diff --git a/src/api/curriculum.ts b/src/api/curriculum.ts index ad3d7c7..8a0532c 100644 --- a/src/api/curriculum.ts +++ b/src/api/curriculum.ts @@ -81,7 +81,7 @@ export const curriculum = { }, /** 查看课程课时数据 */ courseDep(id: number, depId: number | null) { - return request(`/api/v1/course/${id}${depId ? `/dep/${depId}` : ''}`, "GET") + return request(`/api/v1/course/dep`, "GET", {id, depId}) }, /** 播放 */ hourPlay(courseId: number, id: number) { diff --git a/src/api/home.ts b/src/api/home.ts index 5d39f6a..70ee5e3 100644 --- a/src/api/home.ts +++ b/src/api/home.ts @@ -16,7 +16,7 @@ export interface AdwareLinkType { } export interface AdwareType { - image_path:string + image_path: string advert_link: AdwareLinkType scope_id: number | string id: number @@ -29,6 +29,18 @@ export interface AdwareType { end_time?: number } +export interface HomeData { + adverts: AdwareType[] + skill: Kill[] + health: Health[] + brand: { + list: Brand[] + } + illness: { + list: Illness[] + } +} + export const HomeApi = { advert(only_flag: string) { return request("/home/v1/advert/unique?only_flag=" + only_flag, "GET") @@ -49,7 +61,7 @@ export const HomeApi = { }, /** 品牌 */ brand(page: number, page_size: number) { - return request<{ data: Brand[], total: number }>('/home/v1/brand/list', "GET", {page, page_size}) + return request<{ list: Brand[], total: number }>('/home/v1/brand/list', "GET", {page, page_size}) }, /** 技能 */ skillTop(count: number) { @@ -61,11 +73,17 @@ export const HomeApi = { skillList(categoryId: number, page: number, page_size: number) { return request<{ data: Kill[], total: number }>('/home/v1/skill/index', "GET", {categoryId, page, page_size}) }, + skillSetPlay(id: number) { + return request(`/home/v1/skill/set_play/${id}`, "PUT") + }, /** 疾病知识 */ illness(page: number, page_size: number) { return request<{ list: Illness[], total: number }>('/home/v1/article/illness_list', "GET", {page, page_size}) }, category(type: number) { return request('/home/v1/category/index/info?type=' + type, "GET") + }, + home() { + return request('/home/v1/home/home_page', "GET", {count: 3}) } } diff --git a/src/api/illness.ts b/src/api/illness.ts index 7e1aa21..1fd9c3e 100644 --- a/src/api/illness.ts +++ b/src/api/illness.ts @@ -3,13 +3,11 @@ import {request} from "@/api/request"; export const illnessApi = { /** 疾病列表 */ - list(id:number,page: number , page_size: number) { - return request<{ - list: any[], - total: number, - }>(`/home/v1/illness/list?page=${page}&page_size=${page_size}&id=${id}` , "GET") + list(id: number, page: number, page_size: number) { + return request<{ list: any[], total: number }>(`/home/v1/illness/list`, "GET", {page, page_size, id}) }, - articleInfo(id: number ) { - return request<{ content: string }>(`/home/v1/article/${id}` , "GET") + articleInfo(owner_id: number, page: number, page_size: number) { + return request<{ illness:{name:string;description:string;resource:any;album:string[]};list:{list: any[], total: number} }> + (`/home/v1/article/illness_list`, "GET", {page, page_size, owner_id}) }, } diff --git a/src/api/public.ts b/src/api/public.ts index b8c363a..cd4acc1 100644 --- a/src/api/public.ts +++ b/src/api/public.ts @@ -15,9 +15,9 @@ interface CategoryList { export interface Courses { /** 已完成 */ - is_finished: Curriculum[] + // is_finished: Curriculum[] /** 未完成 */ - is_not_finished: Curriculum[] + // is_not_finished: Curriculum[] /** 选秀 */ is_not_required: Curriculum[] /** 必修 */ diff --git a/src/api/request.ts b/src/api/request.ts index 61b1757..49722d0 100644 --- a/src/api/request.ts +++ b/src/api/request.ts @@ -44,6 +44,8 @@ export const ERROR_STATUS: Record = { 'OVERSTEP': '请求越界~' } +let notLoging = false + export function request( url: string, method: keyof Method, @@ -82,15 +84,19 @@ export function request( const data = res?.data as any if (data?.code === 0 && res?.statusCode === 200) { resolve(data?.data) + notLoging = false } else if (res.statusCode === 401) { - // Taro.showModal({ - // title: "登录过期,需重新登陆", - // showCancel: false, - // success() { - Taro.clearStorageSync() - Taro.reLaunch({url: '/pages/login/login'}) - // } - // }) + if (notLoging || !token) return + notLoging = true + Taro.showModal({ + title: "登录过期", + confirmText: "登录", + showCancel: false, + success() { + Taro.clearStorage() + Taro.navigateTo({url: '/pages/login/login'}) + } + }) } else { reject(null) Taro.showToast({ diff --git a/src/api/search.ts b/src/api/search.ts new file mode 100644 index 0000000..88ad654 --- /dev/null +++ b/src/api/search.ts @@ -0,0 +1,11 @@ +import {request} from "@/api/request"; + +export const SearchApi = { + /** 品牌列表 */ + list(page: number , page_size: number, name: string) { + return request<{ + data: any[], + total: number + }>(`/home/v1/search/home?page=${page}&page_size=${page_size}&keywords=${name}&sort_type=1&sort=0` , "GET") + }, +} diff --git a/src/api/user.ts b/src/api/user.ts index 0fd4151..bfdc66c 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -75,9 +75,6 @@ export const userApi = { hourCourse(course_id: string, unique_ident: number) { return request(`/api/v1/course/${course_id}/info/${unique_ident}`, "GET") }, - meetingSave(data: any) { - return request(`/api/v1/auth/login/meeting/save`, "POST", data) - }, info(user_id: string) { return request(`/api/v1/statistics/${user_id}`, "GET") }, @@ -89,5 +86,12 @@ export const userApi = { }, getCode(phone_number: number) { return request('/api/v1/sms/send?phone_number=' + phone_number, "GET") - } + }, + /** 公司列表 */ + companyList() { + return request(`/api/v1/company/mine_list`, "GET") + }, + companyReplace(id: number) { + return request(`/api/v1/company/replace/${id}`, "PATCH") + }, } diff --git a/src/app.config.ts b/src/app.config.ts index 95305a4..a71824d 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -14,7 +14,7 @@ export default defineAppConfig({ navigationBarTextStyle: 'black' }, tabBar: { - color: '#909795', + color: '#606563', selectedColor: '#45D4A8', list: [ { @@ -45,6 +45,10 @@ export default defineAppConfig({ 'pages/my/my': { network: 'all', packages: ['pages/manage'] + }, + 'pages/home/home': { + network: 'all', + packages: ['pages/preview'] } }, subpackages: [ @@ -57,8 +61,7 @@ export default defineAppConfig({ 'history/history', 'curHistory/curHistory', 'hourHistory/hourHistory', - 'courType/courType', - 'sort/sort', // 公共二级分类 + 'courType/courType' ] }, { @@ -89,6 +92,8 @@ export default defineAppConfig({ 'illness/sort/sort', 'illness/list/list', 'illness/article/article', + 'webView/webView', + 'search/search/index', ] }, ], diff --git a/src/app.scss b/src/app.scss index c3aaf7e..886bc0d 100644 --- a/src/app.scss +++ b/src/app.scss @@ -1,4 +1,5 @@ @import "static/css/module"; +@import 'taro-ui/dist/style/index.scss'; .flex {display: flex !important;flex-direction:row} .flex-row{ flex-direction:row!important} @@ -12,6 +13,7 @@ .justify-around{justify-content:space-around} .justify-between{justify-content:space-between} .justify-center{justify-content:center} +.justify-stretch{justify-content:stretch} .flex-wrap{flex-wrap:wrap} @@ -34,6 +36,8 @@ .flex-5{flex: 5} .flex-shrink{flex-shrink: 0} +.gap20rpx{gap: 20rpx} + .w-1 {width: 10%;min-width: 75rpx} .w-2 {width: 20%;min-width: 150rpx} .w-3 {width: 30%;min-width: 225rpx} @@ -84,6 +88,7 @@ .mb-1 {margin-bottom: 10rpx} .mb-1_5 {margin-bottom: 15rpx} .mb-2 {margin-bottom: 20rpx} +.mb-2_4 {margin-bottom: 24rpx} .mb-3 {margin-bottom: 30rpx} .mb-4 {margin-bottom: 40rpx} .mb-5 {margin-bottom: 50rpx} @@ -328,6 +333,10 @@ .border-none{border: none} +.clip { + overflow: hidden; +} + .text-row1 { display: -webkit-box; text-overflow: ellipsis; @@ -336,4 +345,12 @@ -webkit-line-clamp:1; } +.text-row3 { + display: -webkit-box; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-orient:vertical; + -webkit-line-clamp:3; +} + diff --git a/src/app.tsx b/src/app.tsx index 14389ff..157f647 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -32,20 +32,25 @@ function updateApp() { function App(props) { - // 可以使用所有的 React Hooks - Taro.useLaunch(() => { updateApp() storageDep.remove() }) Taro.getSystemInfo({ - success(res) { + success({statusBarHeight = 0, screenWidth, screenHeight, windowHeight, safeArea}) { + const isIos = Taro.getSystemInfoSync().platform === 'ios'; + const {top, height} = Taro.getMenuButtonBoundingClientRect() + const textBarHeight = (top - statusBarHeight) * 2 + height Taro.getApp().globalData = { - statusBarHeight: res.statusBarHeight || 0, - screenWidth: res.screenWidth, - screenHeight: res.screenHeight, - safeArea: res.safeArea, + statusBarHeight, + screenWidth, + screenHeight, + windowHeight, + safeArea, + isIos, + textBarHeight, + menu: Taro.getMenuButtonBoundingClientRect(), } } }) @@ -59,7 +64,6 @@ function App(props) { useDidHide(() => { }) - return ( diff --git a/src/components/empty/empty.module.scss b/src/components/empty/empty.module.scss index 31f0f58..10efb9e 100644 --- a/src/components/empty/empty.module.scss +++ b/src/components/empty/empty.module.scss @@ -1,5 +1,5 @@ .empty { - width: 750rpx; + width: 100%; text-align: center; color: #6c757d; position: relative; @@ -8,7 +8,8 @@ .image { display: block; margin: auto; - width: 600rpx; + max-width: 600rpx; + width: 80%; } .name { diff --git a/src/components/empty/empty.tsx b/src/components/empty/empty.tsx index 57ec81d..1702395 100644 --- a/src/components/empty/empty.tsx +++ b/src/components/empty/empty.tsx @@ -10,7 +10,7 @@ interface Props { const Empty: FC = ({name}) => { return ( - + {name} ) diff --git a/src/components/image/image.module.scss b/src/components/image/image.module.scss new file mode 100644 index 0000000..44a776b --- /dev/null +++ b/src/components/image/image.module.scss @@ -0,0 +1,12 @@ +.imgBox { + position: relative; +} + +.imgError { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin: auto; +} diff --git a/src/components/image/image.tsx b/src/components/image/image.tsx new file mode 100644 index 0000000..b726f93 --- /dev/null +++ b/src/components/image/image.tsx @@ -0,0 +1,77 @@ +import {FC, useEffect, useState} from "react"; +import {Image, ImageProps, View} from "@tarojs/components"; +import shard from '@/static/img/shard.png' +import styles from './image.module.scss' +import Taro from "@tarojs/taro"; + +interface Props extends ImageProps { + width?: number | string + height?: number | string + fallback?: string +} + +const Img: FC = ({src, mode = 'aspectFill', width, height, fallback = shard, ...props}) => { + const [isError, setIsError] = useState(false) + const [loading, setLoading] = useState(true) + + const imgAnimation = Taro.createAnimation({duration: 0}).opacity(0).step() + const [animationData, setAnimationData] = useState(imgAnimation.export()) + + useEffect(() => { + setIsError(!src) + setLoading(!!src) + }, [src]) + + // 图片加载失败 + function onErrorHandler() { + setLoading(false) + setIsError(true) + } + + function onLoadHandler() { + setLoading(false) + setIsError(false) + imgAnimation.opacity(1).step({duration: 200}) + setAnimationData(imgAnimation.export()) + } + + return ( + + {!isError && + + + + } + { + isError && !loading && + + } + + ) +} + +export default Img diff --git a/src/components/loginView/index.module.scss b/src/components/loginView/index.module.scss new file mode 100644 index 0000000..a87a781 --- /dev/null +++ b/src/components/loginView/index.module.scss @@ -0,0 +1,47 @@ +.content { + position: relative; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + image { + width: 320rpx; + height: 208rpx; + } + + .title { + font-size: 28rpx; + font-weight: bold; + color: #323635; + } + + .label { + font-size: 24rpx; + font-weight: 500; + color: #909795; + line-height: 24rpx; + margin: 20rpx 0 ; + } + + .button { + padding: 0 60rpx; + height: 76rpx; + background: #45D4A8; + border-radius: 38rpx 38rpx 38rpx 38rpx; + color: #fff; + line-height: 76rpx; + text-align: center; + font-size: 32rpx; + font-weight: 500; + } + + .nextLabel { + font-size: 24rpx; + font-weight: 500; + color: #909795; + line-height: 24rpx; + margin-top: 15rpx; + } +} diff --git a/src/components/loginView/index.tsx b/src/components/loginView/index.tsx new file mode 100644 index 0000000..2475592 --- /dev/null +++ b/src/components/loginView/index.tsx @@ -0,0 +1,75 @@ +import {CSSProperties, FC, useState} from "react"; +import {View, Image} from "@tarojs/components"; +import styles from './index.module.scss' +import NoLogin from '@/static/img/noLogin.png' +import {Profile} from "@/store"; +import Taro from "@tarojs/taro"; +import {userApi} from "@/api"; + +interface Props { + tips?: string + height?: number + paddingTop?: number + style?: CSSProperties + offImage?: boolean + onSuccess?: VoidFunction +} + +const LoginView: FC = (props) => { + const [isLoading, setLoading] = useState(false) + const {setUser, setToken, setCompany} = Profile.useContainer() + const sizeStyle: CSSProperties = { + height: `${props.height || 1000}rpx`, + paddingTop: `${props.paddingTop || 0}rpx`, + ...props.style, + } + + function login() { + if (isLoading) return; + Taro.showLoading({title: '微信授权中...'}) + setLoading(true) + Taro.login({ + success: async (res) => { + try { + const {catch_key, user, token, company} = await userApi.login(res.code) + Taro.hideLoading() + if (token) { + Taro.showToast({title: '授权成功', duration: 1500, icon: 'success', mask: true}) + setTimeout(() => { + setUser(user) + setToken(token) + setCompany(company) + setLoading(false) + if (props.onSuccess) { + props.onSuccess() + } else { + Taro.switchTab({url: '/pages/home/home'}) + } + }, 1500) + } else { + Taro.setStorageSync('openid', catch_key) + Taro.reLaunch({url: '/pages/check/check'}) + } + } catch (e) { + Taro.hideLoading() + } + setLoading(false) + } + }) + } + + return ( + + { + !props.offImage && <> + + 暂未登录 + + } + 点击按钮完成微信授权 + 立即登录 + + ) +} + +export default LoginView diff --git a/src/components/navigationBar/navigationBar.module.scss b/src/components/navigationBar/navigationBar.module.scss new file mode 100644 index 0000000..1fe8856 --- /dev/null +++ b/src/components/navigationBar/navigationBar.module.scss @@ -0,0 +1,33 @@ +.navigation { + position: sticky; + top: 0; + left: 0; + width: 730rpx; + padding-left: 20rpx; + z-index: 10; + overflow: hidden; + background: #fff; +} + +.leftNode { + position: absolute; + display: flex; + left: 0; + bottom: 0; + align-items: center; +} + +.text { + position: absolute; + left: 0; + right: 0; + margin: auto; + display: flex; + justify-content: center; + align-items: center; +} + +.arrow { + width: 32px; + height: 32px; +} diff --git a/src/components/navigationBar/navigationBar.tsx b/src/components/navigationBar/navigationBar.tsx new file mode 100644 index 0000000..b77d49f --- /dev/null +++ b/src/components/navigationBar/navigationBar.tsx @@ -0,0 +1,56 @@ +import {Image, View} from "@tarojs/components"; +import React, {FC, ReactNode, useMemo} from "react"; +import styles from './navigationBar.module.scss' +import Taro from "@tarojs/taro"; +import leftArrow from '@/static/img/leftArrow.png' + +interface Props { + // 文本 + text?: string | ReactNode + children?: ReactNode | ReactNode[] + // 左边节点 + leftNode?: string | ReactNode | ReactNode[] + // 字体颜色 + color?: string + // 背景颜色 + backgroundColor?: string + // 取消返回按钮 + cancelBack?: boolean + // 跟随页面滚动 + inherit?: boolean + className?: string +} + +const NavigationBar: FC = (props) => { + const globalData = Taro.getApp().globalData + const navigationBarStyle = useMemo((): React.CSSProperties => ({ + background: props.backgroundColor, + position: props.inherit ? 'inherit' : "sticky", + paddingTop: globalData.statusBarHeight + 'px', + height: globalData.textBarHeight + globalData.statusBarHeight + 'px', + boxSizing: 'border-box', + }), [props]) + + + const navigationTextStyle = useMemo((): React.CSSProperties => ({ + color: props.color, + height: globalData.textBarHeight + 'px', + }), [props]) + + return ( + + + {!props.cancelBack && Taro.navigateBack()}> + + } + {props.leftNode} + + {props.children || props.text} + + ) +} + +export default NavigationBar diff --git a/src/components/popPut/popPut.tsx b/src/components/popPut/popPut.tsx index 4184ffc..ed2f6dc 100644 --- a/src/components/popPut/popPut.tsx +++ b/src/components/popPut/popPut.tsx @@ -1,7 +1,8 @@ import {FC, ReactNode, useEffect, useState} from "react"; -import {View, Image} from "@tarojs/components"; +import {View} from "@tarojs/components"; import Icon from "@/components/icon"; import CustomPageContainer from "@/components/custom-page-container/custom-page-container"; +import Img from "@/components/image/image"; interface Props { height?: number | string @@ -46,13 +47,13 @@ const PopPut: FC = ({title, chevron, content, image, isProp, children, sh <> - {opt.leftImage != null && } + {opt.leftImage != null && } {title} {content} {!chevron && } - {image && } + {image && } { diff --git a/src/components/spinner/index.tsx b/src/components/spinner/index.tsx new file mode 100644 index 0000000..a99d6f9 --- /dev/null +++ b/src/components/spinner/index.tsx @@ -0,0 +1,169 @@ +import Taro from "@tarojs/taro"; +import {View, Image} from '@tarojs/components' +import {Component, ReactNode} from "react"; +import indicator from './loading.svg' +import './style.scss' + +// 动画状态 +type Status = + | 'dismissed' + | 'forward' + | 'reverse' + | 'completed' + +interface Props { + enable?: boolean // 控制显现 + overlay?: boolean // 页面覆盖 + block?: boolean // 块级 +} + +interface State { + status?: Status + background?: Record, + rotation?: Record, +} + +type StateSetter = (state: State) => void + +type Controller = { + setTick: (enabled: boolean | undefined) => void + clear: () => void +} + +function createController(setState: StateSetter): Controller { + const background = Taro.createAnimation({duration: 600}) + const rotation = Taro.createAnimation({duration: 600}) + let rotateTimer: ReturnType | undefined + let status: Status | undefined + + const notifyListener = () => setState({ + status, + background: background.export(), + rotation: rotation.export(), + }) + + const clearAnimation = (notify = true) => { + // 清空旋转动画定时器 + if (rotateTimer != null) { + clearTimeout(rotateTimer) + rotateTimer = undefined + } + + // 清空动画 + background.step().export() + rotation.step().export() + + // 通知 UI 刷新 + if (notify) { + notifyListener() + } + } + + const setAnimation = (opacity: number) => { + // 停止旋转动画 + if (rotateTimer != null) { + clearTimeout(rotateTimer) + } + + // 旋转动画定时器 + const rotate = () => { + rotation.opacity(opacity).rotate(360).step({duration: 600}) + notifyListener() + rotateTimer = setTimeout(rotate, 600) + } + + // 背景动画 + background.backgroundColor(`rgba(255,255,255,${opacity})`).step() + + // 启动旋转动画 + rotate() + } + + const onFinish = (opacity: number, nextStatus: Status) => { + const lockStatus = status + if (lockStatus === status) { + background.backgroundColor(`rgba(255,255,255,${opacity})`).step({duration: 0}) + if (nextStatus === 'dismissed') { + clearAnimation() + } + status = nextStatus + notifyListener() + } + } + + const setStatus = (newStatus: Status, opacity: number) => { + if (status !== newStatus) { + status = newStatus + setAnimation(opacity) + if (status === 'reverse') { + onFinish(0, 'dismissed') + } else if (status === 'forward') { + onFinish(1, 'completed') + } + } + } + + const setTick = (enabled?: boolean) => { + if (enabled !== true) { + if (status === 'dismissed') { + clearAnimation() + } else if (status !== 'reverse') { + setStatus('reverse', 0) + } + } else if (status === 'completed') { + // ignore + } else if (status !== 'forward') { + setStatus('forward', 1) + } + } + + return { + setTick, + clear() { + clearAnimation(false) + }, + } +} + +export default class Spin extends Component { + constructor(props) { + super(props) + this.controller = createController(this.onAnimation) + this.state = {} + } + + controller: Controller + + onAnimation = (state: State) => { + this.setState((s) => ({...s, ...state})) + } + + // componentDidMount(): void { + // this.controller.setTick(this.props.enable) + // } + + componentDidUpdate(): void { + this.controller.setTick(this.props.enable) + } + + componentWillUnmount(): void { + this.controller.clear() + } + + shouldComponentUpdate(nextProps: Readonly, nextState: Readonly): boolean { + return nextProps.enable !== this.props.enable + || nextProps.overlay !== this.props.overlay + || nextState.status != this.state.status + } + + render(): ReactNode { + return ( + + + + + + ) + } +} diff --git a/src/components/spinner/loading.svg b/src/components/spinner/loading.svg new file mode 100644 index 0000000..6a23520 --- /dev/null +++ b/src/components/spinner/loading.svg @@ -0,0 +1,13 @@ + diff --git a/src/components/spinner/style.scss b/src/components/spinner/style.scss new file mode 100644 index 0000000..dbaa3e9 --- /dev/null +++ b/src/components/spinner/style.scss @@ -0,0 +1,76 @@ +.spinner-wrapper { + transition: background-color 1200ms ease-out; + + &.is-block { + width: auto; + position: absolute; + z-index: 99999; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + } + + &.is-fixed { + background-color: rgba(#fff, 1.0); + z-index: 99999; + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + right: 0; + bottom: 0; + } + + &.reverse, + &.dismissed { + background-color: rgba(#fff, 0.0); + } + + &.dismissed { + position: fixed; + width: 0; + height: 0; + left: -10000px; + top: -10000px; + right: auto; + bottom: auto; + overflow: hidden; + } +} + +.spinner-wrapper, +.spinner { + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; +} + +.spinner { + padding: 10rpx; + opacity: 1; + transition: opacity 1200ms ease-out; + + &.reverse, + &.dismissed { + opacity: 0; + } +} + +.spinner-icon { + width: 38px; + height: 38px; + animation: spinner-rotation 600ms linear infinite; +} + +@keyframes spinner-rotation { + from { + transform: rotate(0); + } + + to { + transform: rotate(360deg); + } +} diff --git a/src/components/tabs/tabs.scss b/src/components/tabs/tabs.scss index 77db956..19991e0 100644 --- a/src/components/tabs/tabs.scss +++ b/src/components/tabs/tabs.scss @@ -15,11 +15,23 @@ View::-webkit-scrollbar { display: -webkit-flex; display: flex; text-align: center; + align-items: baseline; + } + + .tabs-item { + padding: 16rpx 20rpx; + font-size: 30rpx; + font-family: PingFang SC-Medium, PingFang SC; + font-weight: 500; + color: #606563; } .current { position: relative; + font-size: 36rpx; + font-family: PingFang SC-Bold, PingFang SC; font-weight: bold; + color: #323635; &:after { position: absolute; @@ -37,10 +49,6 @@ View::-webkit-scrollbar { transition: all 200ms; } } - - .tabs-item { - padding: 20rpx; - } } @keyframes spread { diff --git a/src/components/tabs/tabs.tsx b/src/components/tabs/tabs.tsx index 8408d8c..67bb51a 100644 --- a/src/components/tabs/tabs.tsx +++ b/src/components/tabs/tabs.tsx @@ -19,6 +19,7 @@ export type OnChangOpt = { interface TabsProps { current?: number | string tabList: TabList[] + height?: number | string onChange?: (data: OnChangOpt) => void } @@ -47,8 +48,8 @@ const Tabs: FC = (opt: TabsProps) => { return ( - - + + {opt.tabList.map((d, index) => void +} + +type AnswerType = "true" | 'false' + +export const Single: FC = (props) => { + let timer: NodeJS.Timeout + const [lastState, setLastState] = useState<0 | 1>(0) // 0为竖屏,1为横屏 + const [result, setResult] = useState(undefined) + let lastTime = Date.now() + Taro.startAccelerometer() + Taro.onAccelerometerChange((res) => { + const now = Date.now(); + if (now - lastTime < 500) return; + + lastTime = now; + let nowState; + const Roll = Math.atan2(-res.x, Math.sqrt(res.y * res.y + res.z * res.z)) * 57.3; + const Pitch = Math.atan2(res.y, res.z) * 57.3; + + // 横屏状态 + if (Roll > 50) { + if ((Pitch > -180 && Pitch < -60) || (Pitch > 130)) { + nowState = 1; + } else { + nowState = lastState; + } + + } else if ((Roll > 0 && Roll < 30) || (Roll < 0 && Roll > -30)) { + let absPitch = Math.abs(Pitch); + // 如果手机平躺,保持原状态不变,40容错率 + if ((absPitch > 140 || absPitch < 40)) { + nowState = lastState; + } else if (Pitch < 0) { + // 收集竖向正立的情况 + nowState = 0; + } else { + nowState = lastState; + } + } else { + nowState = lastState; + } + + // 状态变化时,触发 + if (nowState !== lastState) { + setLastState(nowState); + } + }) + + useEffect(() => { + timer = setTimeout(() => { + props.examination(false) + }, 4000) + }, [props.topic]) + + const style: React.CSSProperties = useMemo(() => ({ + transform: lastState === 1 && props.full ? "rotate(90deg)" : 'none' + }), [lastState, props.full]) + + function examination(answer: AnswerType) { + if (result) return; + clearTimeout(timer) + setResult(answer) + + setTimeout(() => { + props.examination(props.topic?.right_value === result) + setResult(undefined) + }, 2000) + } + + function judgment(answer: AnswerType): string { + if (result !== answer) return '' + if (props.topic?.right_answer === answer && result === answer) { + return styles.correct + } + return styles.mistake + } + + return ( + <> + { + props.topic && + {props.topic.question} + examination("true")}> + {props.topic.right_value} + + examination("false")}> + {props.topic.error_value} + + + } + + ) +} + +export default Single diff --git a/src/components/video/type.ts b/src/components/video/type.ts index 82fe90b..1c51c51 100644 --- a/src/components/video/type.ts +++ b/src/components/video/type.ts @@ -1,3 +1,5 @@ +import {ReactNode} from "react"; + export interface HVideoOptions { /** 视频时长s */ duration: number @@ -9,11 +11,12 @@ export interface HVideoOptions { poster?: string /** 视频断点 */ breakpoint: number[] - /** 进入断点 */ - onBreakpoint: (id: number) => void + onBreakpoint: (time: number) => void /** 视频播放结束 */ onEnded: () => void - - setTime: (fn:(time:number)=>void) => void + // setTime: (fn: (time: number) => void) => void + /** 全屏改变 */ + fullChange: (fullScreen: boolean) => void + children?: ReactNode } diff --git a/src/components/video/video.tsx b/src/components/video/video.tsx index f2730e3..6e3707b 100644 --- a/src/components/video/video.tsx +++ b/src/components/video/video.tsx @@ -1,7 +1,7 @@ import {BaseEventOrig, Video, VideoProps} from "@tarojs/components"; import {HVideoOptions} from "@/components/video/type"; import Taro from "@tarojs/taro"; -import {FC, useState} from "react"; +import {FC, useEffect, useState} from "react"; import unique_ident from "@/hooks/unique_ident"; import videoEvents from "@/hooks/videoEvents"; @@ -12,6 +12,10 @@ const HVideo: FC = (opt: HVideoOptions) => { try { video = Taro.createVideoContext('myVideo') + } catch (e) { + } + + useEffect(() => { videoEvents.onSetVideoState(({name}) => { switch (name) { case "pause": @@ -22,8 +26,7 @@ const HVideo: FC = (opt: HVideoOptions) => { break } }) - } catch (e) { - } + }, []) function onTimeUpdate(event: BaseEventOrig) { const time = event.detail.currentTime @@ -41,31 +44,15 @@ const HVideo: FC = (opt: HVideoOptions) => { /** 判断是否进入断点 */ opt.breakpoint.forEach(d => { if (time < d + deviation && time > d - deviation) { - video?.pause() - video?.seek(d - deviation) - if (process.env.TARO_ENV === 'h5') { - try { - document?.exitFullscreen().then() - } catch (e) { - } - } - video?.exitFullScreen() opt.onBreakpoint(d) - return } }) } - opt.setTime((time?: number) => { - if (typeof time === 'number') { - video?.seek(time) - } - video?.play() - }) - function onEnded() { if (currentTime + 1 > opt.duration) { opt.onEnded() + videoEvents.videoState('pause') } else { video?.seek(currentTime) unique_ident.remove() @@ -98,7 +85,6 @@ const HVideo: FC = (opt: HVideoOptions) => { Taro.useUnload(() => { unique_ident.put(undefined, currentTime) - unique_ident.remove() unique_ident.upload().then() }) @@ -116,12 +102,14 @@ const HVideo: FC = (opt: HVideoOptions) => { poster={opt?.poster || ''} src={opt.src} enableProgressGesture={opt.preview} - direction={90} onTimeUpdate={onTimeUpdate} onEnded={onEnded} onPlay={onPlay} onPause={onPause} - /> + onFullScreenChange={(event) => opt.fullChange((event.target as any).fullScreen)} + > + {opt.children} + ) } diff --git a/src/components/videoCover/videoCover.scss b/src/components/videoCover/videoCover.scss index df662ed..840c184 100644 --- a/src/components/videoCover/videoCover.scss +++ b/src/components/videoCover/videoCover.scss @@ -51,7 +51,7 @@ .box { box-sizing: border-box; - padding: 15rpx; + padding: 20rpx; .title { width: 100%; @@ -61,6 +61,10 @@ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; + font-size: 28rpx; + font-family: PingFang SC-Medium, PingFang SC; + font-weight: 500; + color: #323635; } } diff --git a/src/components/videoCover/videoCover.tsx b/src/components/videoCover/videoCover.tsx index 6eb2589..c88d827 100644 --- a/src/components/videoCover/videoCover.tsx +++ b/src/components/videoCover/videoCover.tsx @@ -1,7 +1,8 @@ -import {Image, View} from "@tarojs/components"; +import {View} from "@tarojs/components"; import {FC} from "react"; import './videoCover.scss' import Taro from "@tarojs/taro"; +import Img from "@/components/image/image"; interface VideoCoverProps { thumb: string @@ -28,7 +29,7 @@ const VideoCover: FC = (opt: VideoCoverProps) => { - + {opt.content && {opt.content}} {opt.marker && {opt.marker}} diff --git a/src/pages/business/history/history.module.scss b/src/pages/business/history/history.module.scss index cb18426..8997b10 100644 --- a/src/pages/business/history/history.module.scss +++ b/src/pages/business/history/history.module.scss @@ -6,11 +6,6 @@ background: #fff; } -.image { - width: 100%; - height: 100%; - display: block; -} .thumb { background: #ddd; diff --git a/src/pages/business/history/history.tsx b/src/pages/business/history/history.tsx index 76245e4..efb372b 100644 --- a/src/pages/business/history/history.tsx +++ b/src/pages/business/history/history.tsx @@ -1,10 +1,11 @@ -import {Image, Text, View} from "@tarojs/components"; +import {Text, View} from "@tarojs/components"; import styles from './history.module.scss' import Taro from "@tarojs/taro"; import {useEffect, useState} from "react"; import {formatMinute} from "@/utils/time"; import Empty from "@/components/empty/empty"; import {userApi} from "@/api"; +import Img from "@/components/image/image"; const History = () => { const [data, setData] = useState([]) @@ -25,24 +26,22 @@ const History = () => { }, []) return ( - - - {data.length ? data.map((d, index) => - jump(d.userCourseRecord.course_id)}> - - - 共{d.userCourseRecord.hour_count}节/已学{d.userCourseRecord.finished_count}节 + + {data.length ? data.map((d, index) => + jump(d.userCourseRecord.course_id)}> + + + 共{d.userCourseRecord.hour_count}节/已学{d.userCourseRecord.finished_count}节 + + + {d.title} + + 观看{formatMinute(durations[d.id])} + 学习进度:{(d.userCourseRecord.finished_count / d.userCourseRecord.hour_count * 100).toFixed(0)}% - - {d.title} - - 观看{formatMinute(durations[d.id])} - 学习进度:{(d.userCourseRecord.finished_count / d.userCourseRecord.hour_count * 100).toFixed(0)}% - - - ) : } - + + ) : } ) } diff --git a/src/pages/business/sort/sort.config.ts b/src/pages/business/sort/sort.config.ts deleted file mode 100644 index f54b62b..0000000 --- a/src/pages/business/sort/sort.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '分类' -}) diff --git a/src/pages/business/sort/sort.tsx b/src/pages/business/sort/sort.tsx deleted file mode 100644 index e2cd428..0000000 --- a/src/pages/business/sort/sort.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import {FC} from "react"; -import {View} from "@tarojs/components"; -import {useRouter} from "@tarojs/taro"; - -type SortType = '' - -interface Params { - id: number - type: SortType - jumpUrl: (data:Record) => void -} - -const Sort: FC = () => { - const params = useRouter().params as unknown as Params - - return ( - ds - ) -} - -export default Sort diff --git a/src/pages/business/userInfo/userInfo.tsx b/src/pages/business/userInfo/userInfo.tsx index 2bf8f9b..e517b85 100644 --- a/src/pages/business/userInfo/userInfo.tsx +++ b/src/pages/business/userInfo/userInfo.tsx @@ -45,7 +45,7 @@ const List = () => { Taro.showModal({ title: '是否确定退出登录', success({confirm}) { - confirm && empty() + confirm && empty(true,true) } }) } diff --git a/src/pages/business/videoInfo/components/catalogue.tsx b/src/pages/business/videoInfo/components/catalogue.tsx index 1bd3315..08f9fbb 100644 --- a/src/pages/business/videoInfo/components/catalogue.tsx +++ b/src/pages/business/videoInfo/components/catalogue.tsx @@ -9,7 +9,9 @@ import MyButton from "@/components/button/MyButton"; import videoEvents from "@/hooks/videoEvents"; import curRecord from '@/static/img/curRecord.png' import hourRecord from "@/static/img/hourRecord.png" -import {PageContainerInner} from "@/components/custom-page-container/custom-page-container"; +import CustomPageContainer from "@/components/custom-page-container/custom-page-container"; +import {Profile} from "@/store"; +import LoginView from "@/components/loginView"; interface Props { data: CourseDepData | null @@ -29,6 +31,7 @@ const Catalogue: FC = ({data, setHors, id, playId}) => { const [current, setCurrent] = useState(1) const [show, setShow] = useState(false) const [playing, setPlaying] = useState(false) + const {token} = Profile.useContainer() videoEvents.onVideoState(({name}) => { @@ -96,7 +99,8 @@ const Catalogue: FC = ({data, setHors, id, playId}) => { function learning() { const flats: Hour[] = Object.values(data?.hours || {}).flat(Infinity) as Hour[] - if ((data?.learn_hour_records?.length || undefined) == data?.learn_record?.hour_count && flats.length) { + if (!flats.length) return; + if (!data?.learn_hour_records?.length || data.learn_hour_records.length === data.learn_record?.hour_count) { if (flats[0].id === playId) { videoEvents.setVideoState('play') } else { @@ -151,6 +155,19 @@ const Catalogue: FC = ({data, setHors, id, playId}) => { {current === 0 && {data?.course.short_desc || data?.course.title}} {current === 1 && 课程目录 + {!token && } {data?.chapters.length ? Object.values(data?.chapters || {}).map((d, index) => @@ -172,16 +189,17 @@ const Catalogue: FC = ({data, setHors, id, playId}) => { - - { - playing ? 暂停 - : 立即学习 - } - - setShow(true)}>... - + { + token && + { + playing ? 暂停 + : 立即学习 + } + setShow(true)}>... + + } - setShow(false)}> @@ -199,7 +217,7 @@ const Catalogue: FC = ({data, setHors, id, playId}) => { setShow(false)} type='default' fillet>取消 - + ); } diff --git a/src/pages/business/videoInfo/components/course.tsx b/src/pages/business/videoInfo/components/course.tsx index 0b9d142..0ed8eb1 100644 --- a/src/pages/business/videoInfo/components/course.tsx +++ b/src/pages/business/videoInfo/components/course.tsx @@ -1,14 +1,10 @@ -import {ScrollView, Text, View} from "@tarojs/components"; -import {FC, useEffect, useState} from "react"; +import {FC, useCallback, useEffect, useState} from "react"; import HVideo from "@/components/video/video"; import {curriculum, HourPlayData} from "@/api"; import {Profile} from '@/store' import Taro from "@tarojs/taro"; -import Judge from "@/components/topic/judge"; import unique_ident from "@/hooks/unique_ident"; -import MyButton from "@/components/button/MyButton"; -import {formatMinute} from "@/utils/time"; -import CustomPageContainer from "@/components/custom-page-container/custom-page-container"; +import Single from "@/components/topic/single"; interface Props { id: number, @@ -17,25 +13,23 @@ interface Props { curEnd: (test?: boolean) => void } - -let seek: (time: number) => void const Course: FC = ({id, courseId, preview, curEnd}) => { - const [breakpoint, setBreakpoint] = useState([]) // 断点 - const [show, setShow] = useState(false) // 题 + const [breakpoints, setBreakpoints] = useState([]) // 断点 + const [isFull, setIsFull] = useState(false) + const [examAll, setExamAll] = useState>([]) // 题库 const [data, setData] = useState(null) - const [examAll, setExamAll] = useState>([]) // 题库 const [time, setTime] = useState(0) // 进入断点的时间 - const [validate, setValidate] = useState(false) // 开启验证 - const [record, setRecord] = useState([]) // 考题记录 const [testId, setTestId] = useState(null) const {user} = Profile.useContainer() async function onEnded() { + // 学习记录 const startRecording = unique_ident.get() startRecording && await curriculum.curEnd(courseId, id, {...startRecording, duration: data?.duration!}) // 结束 + unique_ident.remove() if (testId) { - if (preview) { // 预览 + if (preview) { Taro.showModal({ title: "是否前往考试", success({confirm}) { @@ -56,65 +50,33 @@ const Course: FC = ({id, courseId, preview, curEnd}) => { } } - /** 进入断点 */ - function onBreakpoint(breakpoint: number) { - setTime(breakpoint) - setShow(true) - } - async function getData() { unique_ident.put(id, Date.now()) const res = await curriculum.hourPlay(courseId, id) if (res) { setData(res) - setBreakpoint(res.timeList) + setBreakpoints(res.timeList) setExamAll(res.hourExamQuestions || []) setTestId(res?.hour_test?.id || null) } } useEffect(() => { - init() getData() }, [id]) - - function init(show = true) { - show && setShow(false) - setValidate(false) - setRecord([]) - setTime(0) - } - - - useEffect(() => { - if (!record.length) return; - const pass = record.every(d => d) - /** 考题正确 */ + const examination = useCallback((result: boolean) => { + if (!time) return const {id: question_id, question_type} = examAll?.[time]?.[0] curriculum.answerRecord(id, { - is_pass: pass, + is_pass: result, user_id: user?.id!, time: time, question_type, question_id - }).then() - - /** 删除断点 */ - const old: number[] = JSON.parse(JSON.stringify(breakpoint)) - const index = old.indexOf(time) - old.splice(index, 1) - setBreakpoint(old) - - if (pass) { - seek(time) - init() - } - }, [record]) - - function videoSeek(fn: (time: number) => void) { - seek = fn - } + }) + setTime(0) + }, [time]) return ( <> @@ -123,44 +85,16 @@ const Course: FC = ({id, courseId, preview, curEnd}) => { preview={preview} src={data?.url || ''} onEnded={onEnded} - breakpoint={breakpoint} - onBreakpoint={onBreakpoint} - setTime={videoSeek} - /> - - - - - {formatMinute(time)}考题 - - {examAll?.[time]?.slice(0, 1)?.map((d) => - - {d.question_type === 2 && - setRecord([isAnswer])} - />} - - )} - - - - { - record.length > 0 - ? { - init(); - seek(time) - }}>关闭 - : setValidate(true)}>交卷 - } - - - - + breakpoint={breakpoints} + fullChange={(fullScreen) => setIsFull(fullScreen)} + onBreakpoint={(now) => { + time !== now && setTime(now) + }}> + + ) } diff --git a/src/pages/business/videoInfo/components/hours.tsx b/src/pages/business/videoInfo/components/hours.tsx index 03bf0d3..9110829 100644 --- a/src/pages/business/videoInfo/components/hours.tsx +++ b/src/pages/business/videoInfo/components/hours.tsx @@ -7,6 +7,7 @@ import {formatMinute} from "@/utils/time"; import Taro from "@tarojs/taro"; import {curriculum} from "@/api"; import lock from '@/static/img/lock.png' +import {Profile} from "@/store"; interface Props { playId: number | null @@ -23,6 +24,7 @@ async function jumTest(hour: Hour) { } const Hours: FC = ({data, click, learn_hour_records, playId}) => { + const {token, empty} = Profile.useContainer() const complete = (id: number): number | undefined => { const find = learn_hour_records?.find(d => d.id === id) if (find) { @@ -32,7 +34,11 @@ const Hours: FC = ({data, click, learn_hour_records, playId}) => { } } - function onClick(id: number, is_complete: number | undefined, hour: Hour, upId?: number,) { + function onClick(id: number, is_complete: number | undefined, hour: Hour, upId?: number) { + if (!token) { + empty() + return; + } if (is_complete === 0) { Taro.showModal({ title: '考卷未完成,是否前往', diff --git a/src/pages/business/videoInfo/videoInfo.scss b/src/pages/business/videoInfo/videoInfo.scss index 5c0a7ad..1874753 100644 --- a/src/pages/business/videoInfo/videoInfo.scss +++ b/src/pages/business/videoInfo/videoInfo.scss @@ -7,11 +7,6 @@ height: 500rpx; } - .image { - width: 100%; - height: 100%; - display: block; - } .header { margin-bottom: 10px; @@ -33,6 +28,11 @@ line-height: 1.75; word-break: break-word; } + + .hours { + position: relative; + min-height: 440rpx; + } } .hor { diff --git a/src/pages/business/videoInfo/videoInfo.tsx b/src/pages/business/videoInfo/videoInfo.tsx index bec6f10..4bc8d59 100644 --- a/src/pages/business/videoInfo/videoInfo.tsx +++ b/src/pages/business/videoInfo/videoInfo.tsx @@ -1,4 +1,4 @@ -import {Image, Text, View} from "@tarojs/components"; +import {Text, View} from "@tarojs/components"; import {FC, useCallback, useEffect, useState} from "react"; import {CourseDepData, curriculum} from "@/api"; import './videoInfo.scss' @@ -9,6 +9,7 @@ import eventsIndex from "@/hooks/eventsIndex"; import {formatMinute} from "@/utils/time"; import videoEvents from "@/hooks/videoEvents"; import unique_ident from "@/hooks/unique_ident"; +import Img from "@/components/image/image"; const VideoInfo: FC = () => { const {id, depId} = Taro.getCurrentInstance()?.router?.params as any @@ -17,13 +18,13 @@ const VideoInfo: FC = () => { const [preview, setPreview] = useState(false) // 预览 const [playing, setPlaying] = useState(false) // 学习中 + const getData = useCallback(async (playing: boolean) => { - const res = await curriculum.courseDep(id, depId) - if (res) { - setData(res) - } - if (playId != null) { // 用于自动播放 判断当前课程是否完成 - currentVideo(res, playing) + try { + const res = await curriculum.courseDep(id, depId) + res && setData(res) + playId != null && currentVideo(res, playing) // 用于自动播放 判断当前课程是否完成 + } catch (e) { } }, [playing, playId]) @@ -73,9 +74,7 @@ const VideoInfo: FC = () => { } }, [playId, data, preview]) - /** - * 判断当前课程是否完成 - */ + /** 判断当前课程是否完成 */ const currentVideo = useCallback((data: CourseDepData, playing: boolean) => { const courseHourRecordsFinish = data?.learn_hour_records.find(d => d.id === playId)?.courseHourRecordsFinish if (typeof courseHourRecordsFinish === 'number') { @@ -100,36 +99,34 @@ const VideoInfo: FC = () => { data && getData(playing) }) - Taro.useUnload(() => { videoEvents.videoOff() }) return ( - <> - - - { - playId - ? - : - } - + + + { + playId + ? + : + } + - - - {data?.is_required ? '必修' : '选修'} - {data?.course.class_hour}课时 - - {data?.course.title} - - 时长:{formatMinute(data?.duration || 0)} - 学习进度{((data?.learn_hour_records.length || 0) / (data?.course.class_hour || 1) * 100).toFixed(0)}% - + + + {data?.is_required ? '必修' : '选修'} + {data?.course.class_hour}课时 + + {data?.course.title} + + 时长:{formatMinute(data?.duration || 0)} + 学习进度{((data?.learn_hour_records.length || 0) / (data?.course.class_hour || 1) * 100).toFixed(0)}% - - + + ) } + export default VideoInfo diff --git a/src/pages/check/check.tsx b/src/pages/check/check.tsx index b461897..da26136 100644 --- a/src/pages/check/check.tsx +++ b/src/pages/check/check.tsx @@ -50,7 +50,7 @@ const Bing: FC = () => { setCompany(res.company) setUser(res.user) setToken(res.token) - Taro.switchTab({url: '/pages/index/index'}) + Taro.switchTab({url: '/pages/home/home'}) } } catch (e) { } diff --git a/src/pages/home/components/adware.tsx b/src/pages/home/components/adware.tsx index 37c68bd..16724f8 100644 --- a/src/pages/home/components/adware.tsx +++ b/src/pages/home/components/adware.tsx @@ -1,16 +1,25 @@ -import {Image, Swiper, SwiperItem, View} from "@tarojs/components"; -import {FC, useState} from "react"; -import {AdwareType, HomeApi} from "@/api"; +import {Swiper, SwiperItem, View} from "@tarojs/components"; +import {FC, useEffect, useState} from "react"; +import {AdwareType} from "@/api"; import Taro from "@tarojs/taro"; import styles from '../home.module.scss' +import Img from "@/components/image/image"; -const Adware: FC = () => { - const [data, setData] = useState([]) +interface Props { + data: any[] + only_flag: string + width: number +} - async function getAdware() { - const res = await HomeApi.advert('home_space') - setData(res) - } +const Adware: FC = ({data, only_flag, width}) => { + const [adverts, setAdverts] = useState([]) + const [space, setSpace] = useState(null) + + useEffect(() => { + const res = data.find(d => d.only_flag === only_flag) + setSpace(res) + setAdverts(res?.adverts || []) + }, [data]) function jumpAdware(url: string) { if (url.substring(0, 3) === 'wx:') { @@ -20,38 +29,41 @@ const Adware: FC = () => { } } - Taro.useLoad(getAdware) - return ( - - { - data.length === 1 && jumpAdware(data[0].image_path)} - className={styles.adware}/> - } + <> { - data.length > 1 && - {data.map(d => - 0 && + { + adverts.length === 1 && jumpAdware(d.image_path)} - style={{width: "100%"}}/> - )} - + onClick={() => jumpAdware(adverts[0].image_path)} + width={width} + height={(space.height / space.width) * width}/> + } + { + adverts.length > 1 && + {adverts.map(d => + jumpAdware(d.image_path)}/> + )} + + } + } - + ) } diff --git a/src/pages/home/components/curRecommended.tsx b/src/pages/home/components/curRecommended.tsx index f15a8c5..07f5e59 100644 --- a/src/pages/home/components/curRecommended.tsx +++ b/src/pages/home/components/curRecommended.tsx @@ -37,9 +37,9 @@ const CurRecommended: FC = () => { return ( <> { - data.length > 0 && + data.length > 0 && - + { data.map(c => { } - - 暂无更多 - + - 暂无更多 - ) } diff --git a/src/pages/home/components/feature.tsx b/src/pages/home/components/feature.tsx index 7614661..d6ae52b 100644 --- a/src/pages/home/components/feature.tsx +++ b/src/pages/home/components/feature.tsx @@ -4,6 +4,7 @@ import illness from '@/static/img/illness.png' import profession from '@/static/img/profession.png' import health from '@/static/img/health.png' import article from '@/static/img/article.png' +import styles from '../home.module.scss' import Taro from "@tarojs/taro"; const Feature: FC = () => { @@ -19,11 +20,11 @@ const Feature: FC = () => { } return ( - + { list.map(d => jump(d.url)}> - - {d.text} + + {d.text} ) } diff --git a/src/pages/home/components/feature_recommended.tsx b/src/pages/home/components/feature_recommended.tsx index f69f5cf..04ba180 100644 --- a/src/pages/home/components/feature_recommended.tsx +++ b/src/pages/home/components/feature_recommended.tsx @@ -10,6 +10,7 @@ import brandTop from '@/static/img/brandTop.png' import illnessTop from '@/static/img/illnessTop.png' import healthTop from '@/static/img/healthTop.png' import professionTop from '@/static/img/professionTop.png' +import Img from "@/components/image/image"; interface DataContent { @@ -25,9 +26,17 @@ interface Data { url: string detailsUrl: string data: DataContent[] + type?: 'health' | 'kill' } -const FeatureRecommended: FC = () => { +interface Props { + skill: Kill[] // 技能 + health: Health[] // 健康 + brand: Brand[] // 品牌 + illness: Illness[] // 疾病 +} + +const FeatureRecommended: FC = (props) => { const [data, setData] = useState([ { titleUrl: brandTop, @@ -39,18 +48,20 @@ const FeatureRecommended: FC = () => { titleUrl: healthTop, url: '/pages/preview/health/health', detailsUrl: '/pages/preview/videoFull/videoFull', - data: [] + data: [], + type: "health" }, { titleUrl: professionTop, url: '/pages/preview/profession/profession', detailsUrl: '/pages/preview/videoFull/videoFull', - data: [] + data: [], + type: 'kill' }, { titleUrl: illnessTop, url: '/pages/preview/illness/sort/sort', - detailsUrl: '/pages/preview/illness/article/article', + detailsUrl: '/pages/preview/illness/list/list', data: [] }, ]) @@ -58,8 +69,7 @@ const FeatureRecommended: FC = () => { /** 品牌 */ async function getBrand(): Promise { try { - const res = await HomeApi.brand(1, 3) - return res.data.map(d => ({ + return props.brand.map(d => ({ id: d.id, title: d.name, imageUrl: d.brand_album, @@ -74,13 +84,12 @@ const FeatureRecommended: FC = () => { /** 健康知识 */ async function getHealth(): Promise { try { - const res = await HomeApi.healthTop(3) - return res.map(d => ({ + return props.health?.map(d => ({ id: d.id, title: d.title, imageUrl: d.url_path, description: d.introduction, - path: `?url=${d.resource.url}&poster=${d.url_path}&title=${d.resource.name}` + path: `?url=${d.resource?.url}&poster=${d.url_path}&title=${d.title}` })) } catch (e) { } @@ -90,13 +99,12 @@ const FeatureRecommended: FC = () => { /** 技能 */ async function getKill(): Promise { try { - const res = await HomeApi.skillTop(3) - return res.map(d => ({ + return props.skill.map(d => ({ id: d.id, imageUrl: d.url_path, - description: '', - title: d.resource.name, - path: `?url=${d.resource.url}&poster=${d.url_path}&title=${d.resource.name}` + description: d.introduction, + title: d.title, + path: `?url=${d.resource?.url}&poster=${d.url_path}&title=${d.title}` })) } catch (e) { } @@ -106,12 +114,11 @@ const FeatureRecommended: FC = () => { /** 疾病 */ async function getIllness(): Promise { try { - const res = await HomeApi.illness(1, 3) - return res.list.map(d => ({ + return props.illness.map(d => ({ id: d.id, imageUrl: '', - description: d.content, - title: d.title, + description: d.description || '暂无简介', + title: d.name, path: `?id=${d.id}` })) } catch (e) { @@ -125,19 +132,26 @@ const FeatureRecommended: FC = () => { oldData[0].data = brand oldData[1].data = health oldData[2].data = kill - console.log(illness) oldData[3].data = illness setData(oldData) }) - }, []) + }, [props]) - function jump(url: string) { + // TODO 后续增加播放量使用公共接口 + function jump(url: string, playId?: number, type?: 'health' | 'kill') { + if (playId && type) { + if (type === 'health') { + HomeApi.healthSetPlay(playId) + } else if (type === 'kill') { + HomeApi.skillSetPlay(playId) + } + } Taro.navigateTo({url}) } return ( - + { data.map(d => { className={styles.featureTitle} onClick={() => jump(d.url)} src={d.titleUrl}/> { - d.data.map((c, index) => 0 && d.data.map((c, index) => jump(d.detailsUrl + c.path)}> - - + onClick={() => jump(d.detailsUrl + c.path, c.id, d.type)}> + + + + - {c.title} - {c.description} + {c.title} + {c.description} ) } diff --git a/src/pages/home/components/search.tsx b/src/pages/home/components/search.tsx index 7910e33..a75e30c 100644 --- a/src/pages/home/components/search.tsx +++ b/src/pages/home/components/search.tsx @@ -1,13 +1,19 @@ import {FC} from "react"; -import {Text, View} from "@tarojs/components"; +import {View} from "@tarojs/components"; import styles from "../home.module.scss"; import Icon from "@/components/icon"; +import Taro from "@tarojs/taro"; + export const Search: FC = () => { + + function jump(){ + Taro.navigateTo({url:'/pages/preview/search/search/index'}) + } return ( - - - 搜索课程 + + + 点击搜索 ) } diff --git a/src/pages/home/home.config.ts b/src/pages/home/home.config.ts index 09216b4..595f67a 100644 --- a/src/pages/home/home.config.ts +++ b/src/pages/home/home.config.ts @@ -1,7 +1,7 @@ export default definePageConfig({ navigationBarTitleText: '康一诺', - // navigationStyle: 'custom', + navigationStyle: 'custom', navigationBarBackgroundColor: '#92ecc5', - navigationBarTextStyle: 'white', + // navigationBarTextStyle: 'white', onReachBottomDistance: 50 }) diff --git a/src/pages/home/home.module.scss b/src/pages/home/home.module.scss index d2b5e90..ccfc67f 100644 --- a/src/pages/home/home.module.scss +++ b/src/pages/home/home.module.scss @@ -1,5 +1,5 @@ .tipsLogin { - padding: 24rpx; + padding: 20px; color: #fff; align-items: center; position: fixed; @@ -9,59 +9,102 @@ justify-content: space-between; width: 100%; box-sizing: border-box; - background: rgba(#000, .7); + background: rgba(#000, .6); + font-size: 28rpx; + font-family: PingFang SC-Medium, PingFang SC; + font-weight: 500; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); } +.header { + width: 100%; + overflow: hidden; + margin-bottom: 20rpx; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + + //&:after { + // min-height: 100vh; + // position: absolute; + // top: 0; + // left: 0; + // width: 100%; + // content: ''; + // display: block; + // background: linear-gradient(to right, #DBF3F5, #B9ECD7, #C1EEDA) no-repeat; + // min-height: 100vh; + // background-size: 100% 600rpx; + // z-index: -1; + //} +} + +.headerDivider { + z-index: 99; + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 0; + transform: scaleY(0.5); + transform-origin: bottom center; +} .content { - position: relative; padding: 0 20px; - min-height: 90vh; box-sizing: border-box; - width: 750rpx; - overflow: hidden; &:after { position: absolute; top: 0; - left: -10%; - width: 120%; + left: 0; + width: 100%; height: 400rpx; content: ''; display: block; - background: linear-gradient(to bottom, #92ecc5, #f1f8f6) no-repeat; + background: linear-gradient(to right, #DBF3F5, #B9ECD7, #C1EEDA) no-repeat; z-index: -1; + filter: blur(50px); } } .search { - width: 710rpx; background: #fff; border-radius: 100px; - line-height: 68rpx; - color: #bbb; font-size: 28rpx; display: flex; align-items: center; + box-sizing: border-box; justify-content: center; + height: 68rpx; + margin-bottom: 40rpx; + color: #909795; } .adware { - //margin-top: 40rpx; width: 100%; - height: 260rpx; border-radius: 16rpx; overflow: hidden; - background: #eee; + margin-bottom: 40rpx; } .videoListBox { border-radius: 20px; } +.featureList { + font-size: 28rpx; + font-family: PingFang SC-Bold, PingFang SC; + font-weight: bold; + color: #323635; + margin-top: 10px; +} + + .courseTag { - width: 200px; - margin: auto; + width: 162px; + height: 46rpx; + margin: 0 auto 30rpx; display: block; } @@ -69,31 +112,70 @@ color: #323635; background: #fff; padding: 30rpx 0 30rpx 30rpx; - margin-top: 40rpx; - border-radius: 30rpx; + margin-bottom: 40rpx; + border-radius: 20rpx; + position: relative; + overflow: hidden; + + &:after { + content: ''; + display: block; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 40rpx; + background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 100%); + } } .featureTitle { + max-width: 212px; height: 50rpx; - padding-bottom: 30rpx; + padding-bottom: 20rpx; } .featureText { width: calc(100% - 140px - 50px); } +.featureTextTitle { + font-size: 32rpx; + font-family: PingFang SC-Medium, PingFang SC; + font-weight: 500; + color: #323635; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} + +.featureTextDescription { + font-size: 28rpx; + font-family: PingFang SC-Medium, PingFang SC; + font-weight: 500; + color: #909795; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + line-height: 2; +} + .ranking { + top: 0; position: absolute; left: 24rpx; - width: 24px; - height: 24px; + width: 30px; + height: 30px; } .featureImage { width: 140px; - height: 90px; + height: 100px; background: #eee; border-radius: 12rpx; overflow: hidden; margin-right: 20rpx; + vertical-align: middle; } diff --git a/src/pages/home/home.tsx b/src/pages/home/home.tsx index 506d598..d946f34 100644 --- a/src/pages/home/home.tsx +++ b/src/pages/home/home.tsx @@ -1,31 +1,85 @@ -import {FC} from "react"; -import {View} from "@tarojs/components"; +import {FC, useEffect, useState} from "react"; +import {Image, View, Text} from "@tarojs/components"; import styles from "./home.module.scss"; -// import {Search} from "@/pages/home/components/search"; import Adware from "@/pages/home/components/adware"; import Feature from "@/pages/home/components/feature"; import FeatureRecommended from "@/pages/home/components/feature_recommended"; import CurRecommended from "@/pages/home/components/curRecommended"; import MyButton from "@/components/button/MyButton"; import {Profile} from "@/store"; +import Taro from "@tarojs/taro"; +import {HomeApi, HomeData} from "@/api"; +import logo from '@/static/img/logo.svg' +import Spin from "@/components/spinner"; +import NavigationBar from "@/components/navigationBar/navigationBar"; +import {Search} from "@/pages/home/components/search"; const Home: FC = () => { - const {token, empty} = Profile.useContainer() + const globalData = Taro.getApp().globalData + const {token} = Profile.useContainer() + const [data, setData] = useState(null) + const [enable, setEnable] = useState(true) + const [navbarOpacity, setNavbarOpacity] = useState('0') + const navbarHeight = globalData.statusBarHeight + globalData.textBarHeight; + + function unLogin() { + Taro.clearStorage() + Taro.navigateTo({url: '/pages/login/login'}) + } + + useEffect(() => { + HomeApi.home().then(res => { + setData(res) + }) + setTimeout(() => { + setEnable(false) + }, 600) + }, []) + + Taro.usePageScroll((e) => { + const v = (Math.min(e.scrollTop / navbarHeight, 1) * 0.9).toFixed(6) + if (v != navbarOpacity) { + setNavbarOpacity(v) + } + }) return ( - - {/**/} - - - - - { - !token && - 登录后享受更多学习服务~ - 立即登录 - - } - + <> + + + 医学道 + + } + cancelBack + > + + + + + + + + + + {data && } + { + !token && + 登录后享受更多服务~ + 立即登录 + + } + + ) } diff --git a/src/pages/index/components/videoList.tsx b/src/pages/index/components/videoList.tsx index 4352a77..5fba1bb 100644 --- a/src/pages/index/components/videoList.tsx +++ b/src/pages/index/components/videoList.tsx @@ -1,4 +1,4 @@ -import {FC, useEffect, useState} from "react"; +import {FC, useEffect, useMemo, useState} from "react"; import {useDidShow} from "@tarojs/taro"; import {ScrollView, Swiper, SwiperItem, View} from "@tarojs/components"; import {Courses, CoursesKey, publicApi} from "@/api/public"; @@ -7,7 +7,8 @@ import styles from '../index.module.scss' import {formatMinute} from "@/utils/time"; import {userApi} from "@/api"; import Empty from "@/components/empty/empty"; -import eventsIndex from "@/hooks/eventsIndex"; +import {Profile} from "@/store"; +import LoginView from "@/components/loginView"; interface Props { categoryKey: CoursesKey @@ -16,13 +17,14 @@ interface Props { export const VideoList: FC = ({categoryKey, setCategoryKey}) => { const [data, setData] = useState({ - is_finished: [], - is_not_required: [], is_required: [], - is_not_finished: [], + is_not_required: [], + // is_finished: [], + // is_not_finished: [], }) const [page, setPage] = useState(1) const [records, setRecords] = useState([]) + const {token} = Profile.useContainer() function screen(oldData: Curriculum[], data: Curriculum[]): Curriculum[] { return data.reduce((pre, cur) => { @@ -43,8 +45,8 @@ export const VideoList: FC = ({categoryKey, setCategoryKey}) => { setData({ is_required: screen(old.is_required, res.is_required || []), is_not_required: screen(old.is_not_required, res.is_not_required || []), - is_finished: screen(old.is_finished, res.is_finished || []), - is_not_finished: screen(old.is_not_finished, res.is_not_finished || []), + // is_finished: screen(old.is_finished, res.is_finished || []), + // is_not_finished: screen(old.is_not_finished, res.is_not_finished || []), }) } catch (e) { } @@ -63,7 +65,6 @@ export const VideoList: FC = ({categoryKey, setCategoryKey}) => { switch (categoryKey) { case "is_required": case "is_not_required": - case "is_not_finished": const find = records.find(d => d?.course_id === id) if (find) { if (class_hour === find.finished_count) { @@ -72,32 +73,27 @@ export const VideoList: FC = ({categoryKey, setCategoryKey}) => { return ({`共${class_hour}节/已学${find.finished_count}节`}) } return ({`共${class_hour}节/已学0节`}) - case "is_finished": - return 已完成 } } - eventsIndex.on(({id}) => { - if (id == null) return; - for (const [index, notFinished] of data.is_not_finished.entries()) { - if (notFinished.id === id) { - data.is_finished.push(notFinished) - data.is_not_finished.splice(index, 1) - return - } - } - }) + // eventsIndex.on(({id}) => { + // if (id == null) return; + // for (const [index, notFinished] of data.is_not_finished.entries()) { + // if (notFinished.id === id) { + // data.is_finished.push(notFinished) + // data.is_not_finished.splice(index, 1) + // return + // } + // } + // }) - useDidShow(() => { + const fetchData = () => { getData().then() getRecords().then() - }) - - useEffect(() => { - getData().then() - getRecords().then() - }, [page]) + } + useDidShow(fetchData) + useEffect(fetchData, [page]) function changeSwiper(e) { const index = e.detail.current @@ -105,25 +101,40 @@ export const VideoList: FC = ({categoryKey, setCategoryKey}) => { setCategoryKey(categoryKeys[index]) } + const categoryIndex = useMemo(() => { + const index = Object.keys(data).findIndex(d => d === categoryKey) + return index < 0 ? 0 : index + }, [data, categoryKey]) + return ( - d === categoryKey)}> + { - Object.values(data).map((value) => - setPage(page + 1)}> + Object.entries(data).map(([key, value]) => + setPage(page + 1)} enhanced + showScrollbar={false}> { - value?.length ? value?.map(c => - ) - : + !token + && key === 'is_required' + ? : value?.length ? + <> + { + value?.map(c => + ) + } + 暂无更多 + + : } diff --git a/src/pages/index/index.config.ts b/src/pages/index/index.config.ts index 3637195..90c348c 100644 --- a/src/pages/index/index.config.ts +++ b/src/pages/index/index.config.ts @@ -1,5 +1,3 @@ export default definePageConfig({ - navigationBarTitleText: '医学道', - navigationBarBackgroundColor: '#92ecc5', - navigationBarTextStyle: 'white', + navigationStyle: 'custom', }) diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx index 99032e0..3f77848 100644 --- a/src/pages/index/index.tsx +++ b/src/pages/index/index.tsx @@ -4,13 +4,14 @@ import styles from './index.module.scss' import {VideoList} from "@/pages/index/components/videoList"; import Tabs, {OnChangOpt, TabList} from "@/components/tabs/tabs"; import {CoursesKey} from "@/api/public"; +import NavigationBar from "@/components/navigationBar/navigationBar"; const Index: FC = () => { const category: TabList[] = [ {title: "必修", value: 'is_required'}, {title: "选修", value: 'is_not_required'}, - {title: "已完成", value: 'is_finished'}, - {title: "未完成", value: 'is_not_finished'}, + // {title: "已完成", value: 'is_finished'}, + // {title: "未完成", value: 'is_not_finished'}, ] const [categoryKey, setCategoryKey] = useState('is_required') @@ -18,14 +19,18 @@ const Index: FC = () => { setCategoryKey(data.tab?.value as CoursesKey) } - return ( - <> - - - setCategoryKey(categoryKey)}/> - - + + } + backgroundColor={'transparent'} + /> + setCategoryKey(categoryKey)} + /> + ) } diff --git a/src/pages/login/login.config.ts b/src/pages/login/login.config.ts index 72e8cfc..2e697f0 100644 --- a/src/pages/login/login.config.ts +++ b/src/pages/login/login.config.ts @@ -1,4 +1,3 @@ export default definePageConfig({ - navigationStyle: 'custom', navigationBarTitleText: '登录' }) diff --git a/src/pages/login/login.module.scss b/src/pages/login/login.module.scss index 43518ce..b568542 100644 --- a/src/pages/login/login.module.scss +++ b/src/pages/login/login.module.scss @@ -59,3 +59,5 @@ height: 50vh; padding: 50px 30px 0; } + + diff --git a/src/pages/login/login.tsx b/src/pages/login/login.tsx index 6024540..bf19ea2 100644 --- a/src/pages/login/login.tsx +++ b/src/pages/login/login.tsx @@ -8,19 +8,15 @@ import {userApi} from "@/api"; import {loginApi, LoginParams} from "@/api/login"; import MyButton from "@/components/button/MyButton"; -const Login: FC = () => { - // const {statusBarHeight = 0} = Taro.getSystemInfoSync() - // const bbc = getMenuButtonBoundingClientRect(); - // const navHeight = bbc.bottom + (bbc.top - statusBarHeight) - statusBarHeight +const Login: FC = () => { const [isLoading, setLoading] = useState(false) const [error, setError] = useState(null) - const {setUser, setToken, setCompany} = Profile.useContainer() + const {setUser, setToken, setCompany, empty} = Profile.useContainer() const [h5params, setH5Params] = useState(null) - useEffect(() => { - + empty(false) if (process.env.TARO_ENV === 'h5') { setLoading(true); loginApi.getParams().then((res) => { @@ -62,7 +58,9 @@ const Login: FC = () => { setCompany(company) setLoading(false) Taro.switchTab({url: '/pages/home/home'}) + } else { + Taro.setStorageSync('openid', catch_key) Taro.reLaunch({url: '/pages/check/check'}) } @@ -78,11 +76,11 @@ const Login: FC = () => { } } - async function TESTLOGIN() { - const res = await loginApi.testLogin() - Taro.setStorageSync('profile', JSON.stringify(res)) - Taro.reLaunch({url: '/pages/home/home'}) - } + // async function TESTLOGIN() { + // const res = await loginApi.testLogin() + // Taro.setStorageSync('profile', JSON.stringify(res)) + // Taro.reLaunch({url: '/pages/home/home'}) + // } return ( diff --git a/src/pages/manage/courseAdmin/components/search.tsx b/src/pages/manage/courseAdmin/components/search.tsx index 367a088..43f9fd7 100644 --- a/src/pages/manage/courseAdmin/components/search.tsx +++ b/src/pages/manage/courseAdmin/components/search.tsx @@ -88,7 +88,7 @@ export const Search: FC = ({param, setParam}) => { {deps.length ? <> { - deps.map(dep => changeDepId(dep.id)}> diff --git a/src/pages/manage/courseAdmin/courseAdmin.tsx b/src/pages/manage/courseAdmin/courseAdmin.tsx index 6eb09f5..ad087dd 100644 --- a/src/pages/manage/courseAdmin/courseAdmin.tsx +++ b/src/pages/manage/courseAdmin/courseAdmin.tsx @@ -6,12 +6,14 @@ import styles from './courseAdmin.module.scss' import Taro, {useReachBottom} from "@tarojs/taro"; import MyButton from "@/components/button/MyButton"; import storageDep from "@/hooks/storageDep"; +import Spin from "@/components/spinner"; const CourseAdmin: FC = () => { const [total, setTotal] = useState(0) const [data, setData] = useState([]) const [batch, setBatch] = useState(false) const [curs, setCurs] = useState([]) + const [enable, setEnable] = useState(true) const [param, setParam] = useState({ page: 1, page_size: 10, @@ -26,7 +28,7 @@ const CourseAdmin: FC = () => { courseApi.getCourseAll({...param, page_size: param.page_size * (replace ? param.page : 1)}).then(res => { setTotal(res.total) if (param.page === 1 || replace) { - setData(res.data) + setData(res.data || []) } else { setData([ ...data, @@ -34,6 +36,7 @@ const CourseAdmin: FC = () => { ]) } }) + setEnable(false) } useEffect(() => { @@ -53,7 +56,7 @@ const CourseAdmin: FC = () => { if (curs.length === data.length) { setCurs([]) } else { - setCurs(data.map(d => d.id)) + setCurs(data?.map(d => d.id)) } } @@ -72,7 +75,7 @@ const CourseAdmin: FC = () => { Taro.showModal({ title: '删除警告', content: "删除后所有部门不可查看", - confirmText:'删除', + confirmText: '删除', async success({confirm}) { if (confirm) { try { @@ -108,7 +111,7 @@ const CourseAdmin: FC = () => { * @param required 批量添加为[] */ function batchChangDep(ids: number[], depList = [], required = []) { - if (!ids.length) { + if (!ids?.length) { Taro.showToast({title: '请选择课程', icon: 'none'}) return } @@ -149,11 +152,12 @@ const CourseAdmin: FC = () => { return ( + { - data.map((d, index) => + data?.map((d, index) => addCurs(d.id)}> {batch && { const router = useRouter() @@ -17,6 +18,7 @@ const DepAdmin: FC = () => { const [isPut, setIsPut] = useState(false) const [depName, setDepName] = useState('') const [reset, setReset] = useState(false) + const [enable, setEnable] = useState(true) const {company} = Profile.useContainer() @@ -31,6 +33,7 @@ const DepAdmin: FC = () => { } } catch (e) { } + setEnable(false) } function showPop(name: string | undefined) { @@ -137,6 +140,7 @@ const DepAdmin: FC = () => { return ( <> + {manages.map(d => { const [ids, setIds] = useState([]) const [deps, setDeps] = useState([]) const [required, setRequired] = useState([]) + const [enable, setEnable] = useState(true) useEffect(() => { curriculum.department().then(res => { setDeps(res.data) }) + setEnable(false) setIds(JSON.parse(params.depIds)) setRequired(JSON.parse(params.required || "[]")) }, []) @@ -79,6 +82,7 @@ const SelectDep: FC = () => { return ( + {deps.map((d) => onChange(d.id)}> diff --git a/src/pages/manage/spotMeeting/spotMeeting.tsx b/src/pages/manage/spotMeeting/spotMeeting.tsx index e8d3f08..788ab85 100644 --- a/src/pages/manage/spotMeeting/spotMeeting.tsx +++ b/src/pages/manage/spotMeeting/spotMeeting.tsx @@ -25,6 +25,7 @@ const SpotMeeting: FC = () => { const [loading, setLoading] = useState(false) const [status, setStatus] = useState(0) // 状态 const [id, setId] = useState(params.id ? Number(params.id) : undefined) + const pathUrl = process.env.TARO_ENV === 'h5' ? '/official/qrcode' : '/wechat/link' const {company} = Profile.useContainer() function setData(res: Meeting | null) { @@ -119,6 +120,9 @@ const SpotMeeting: FC = () => { //存储二维码 handleWriteFile() }, + fail() { + Taro.showToast({title: '保存授权失败', icon: "error"}) + } }); } else { handleWriteFile() @@ -133,7 +137,7 @@ const SpotMeeting: FC = () => { /** 获取二维码地址 */ const downUrl = (id: number, down = true) => { Taro.showLoading({title: '加载二维码'}) - const url = process.env.TARO_APP_API + '/official/qrcode?' + 'meeting_id=' + id + '&path=' + path + const url = process.env.TARO_APP_API + pathUrl + '?meeting_id=' + id + '&path=' + path if (process.env.TARO_ENV !== 'h5') { Taro.downloadFile({ @@ -302,17 +306,6 @@ const SpotMeeting: FC = () => { x.id == depid)?.name}/> - {/* setDescription(e.detail.value)}*/} - {/* style={{height: '60px'}}>*/} - {/**/} - { id !== undefined && <> diff --git a/src/pages/manage/userInfo/components/info.tsx b/src/pages/manage/userInfo/components/info.tsx index db7f5fc..973fdf0 100644 --- a/src/pages/manage/userInfo/components/info.tsx +++ b/src/pages/manage/userInfo/components/info.tsx @@ -1,6 +1,7 @@ import {FC} from "react"; -import {Image, Text, View} from "@tarojs/components"; +import { Text, View} from "@tarojs/components"; import styles from '../userInfo.module.scss' +import Img from "@/components/image/image"; interface Props { data: User | null @@ -12,7 +13,7 @@ const Info: FC = ({data}) => { return ( <> - + {data?.name} diff --git a/src/pages/manage/userInfo/userInfo.module.scss b/src/pages/manage/userInfo/userInfo.module.scss index 11d96fc..9cbc680 100644 --- a/src/pages/manage/userInfo/userInfo.module.scss +++ b/src/pages/manage/userInfo/userInfo.module.scss @@ -15,7 +15,6 @@ .image { width: 120rpx; height: 120rpx; - background: #ddd; border-radius: 10rpx; overflow: hidden; } diff --git a/src/pages/meeting/meeting.tsx b/src/pages/meeting/meeting.tsx index 16c8e89..ee6f97f 100644 --- a/src/pages/meeting/meeting.tsx +++ b/src/pages/meeting/meeting.tsx @@ -48,7 +48,7 @@ const MeetingLogin: FC = () => { Taro.showModal({ title: res.type === 0 ? '暂未开始' : '二维码已过期', success() { - Taro.reLaunch({url: '/pages/login/login'}) + Taro.redirectTo({url: '/pages/login/login'}) } }) return diff --git a/src/pages/my/components/header/header.tsx b/src/pages/my/components/header/header.tsx index 35de45f..0235cbf 100644 --- a/src/pages/my/components/header/header.tsx +++ b/src/pages/my/components/header/header.tsx @@ -2,20 +2,40 @@ import {Profile} from "@/store"; import {Image, Text, View} from "@tarojs/components"; import styles from "@/pages/my/my.module.scss"; import avatar from "@/static/img/avatar.png" +import blacktriang from "@/static/img/blacktriangle.png" -const Header = () => { - const {user} = Profile.useContainer() +const Header = ({showCompany}:{showCompany:()=> void}) => { + const {token,user,company,empty} = Profile.useContainer() return ( - - - {user?.name} - - 手机号:{user?.phone_number} + { + token ? + : + + } + { token ? + + {user?.name} + + { + showCompany() + }}> + {company?.name} + + + : + + { + empty() + }}>请登录 - + } + + {/**/} + {/* 手机号:{user?.phone_number}*/} + {/**/} ) diff --git a/src/pages/my/components/header/service.tsx b/src/pages/my/components/header/service.tsx index c8ab9b6..d652b8f 100644 --- a/src/pages/my/components/header/service.tsx +++ b/src/pages/my/components/header/service.tsx @@ -22,7 +22,7 @@ const Service = () => { {title: '个人中心', src: userInfo, router: '/pages/business/userInfo/userInfo'}, ]) - const {user, setUser} = Profile.useContainer() + const {token,user, setUser} = Profile.useContainer() Taro.useDidShow(async () => { if (user?.id) { @@ -33,18 +33,24 @@ const Service = () => { useEffect(() => { const oldList: List[] = JSON.parse(JSON.stringify(list)) - if ([1, 2].includes(user?.role_type || 0)) { - oldList.unshift(...[ - {title: '部门管理', src: dep, router: '/pages/manage/depAdmin/depAdmin'}, - // {title: '课程市场', src: buy, router: '/pages/manage/curriculum/curriculum'}, - {title: '现场会', src: spotMeeting, router: '/pages/manage/spotMeeting/spotMeeting'}, - {title: '课程管理', src: course, router: '/pages/manage/courseAdmin/courseAdmin'}, - ]) - setList(oldList) + if(token){ + if ([1, 2].includes(user?.role_type || 0)) { + oldList.unshift(...[ + {title: '部门管理', src: dep, router: '/pages/manage/depAdmin/depAdmin'}, + // {title: '课程市场', src: buy, router: '/pages/manage/curriculum/curriculum'}, + {title: '现场会', src: spotMeeting, router: '/pages/manage/spotMeeting/spotMeeting'}, + {title: '课程管理', src: course, router: '/pages/manage/courseAdmin/courseAdmin'}, + ]) + setList(oldList) + } } }, []) function jump(url: string) { + if(!token){ + Taro.navigateTo({url:'/pages/login/login'}) + return + } Taro.navigateTo({url}) } diff --git a/src/pages/my/components/header/time.tsx b/src/pages/my/components/header/time.tsx index a2aeeda..ef2e98c 100644 --- a/src/pages/my/components/header/time.tsx +++ b/src/pages/my/components/header/time.tsx @@ -10,6 +10,7 @@ import time1 from "@/static/img/time1.png"; import time2 from "@/static/img/time2.png"; import over from '@/static/img/over.png' import incomplete from '@/static/img/incomplete.png' +import {Profile} from "@/store"; interface List { title: string @@ -19,6 +20,7 @@ interface List { } const Time: FC = () => { + const {token} = Profile.useContainer() const [list, setList] = useState([ {title: '今日时长', time: '00:00', src: time1}, {title: '累计时长', time: '00:00', src: time2}, @@ -45,6 +47,10 @@ const Time: FC = () => { }) function jump(type?: number) { + if (!token) { + Taro.navigateTo({url: '/pages/login/login'}) + return; + } if (!type) return; Taro.navigateTo({url: "/pages/business/courType/courType?type=" + type}) } @@ -59,7 +65,7 @@ const Time: FC = () => { {d.title} - {d.time} + {token && {d.time}} diff --git a/src/pages/my/my.module.scss b/src/pages/my/my.module.scss index 648a4d9..d4667f3 100644 --- a/src/pages/my/my.module.scss +++ b/src/pages/my/my.module.scss @@ -1,5 +1,7 @@ page { background: #F2F8F6 !important; + width:750rpx; + overflow: hidden; } .content { @@ -89,3 +91,51 @@ page { padding: 30rpx 20px; margin: 20rpx; } + +.box { + display: flex; + background-color: #fff; + border-radius: 16rpx; + padding: 16rpx 0; + box-sizing: border-box; + border-bottom: 2rpx solid #F5F8F7; + &.noBorder{ + border:none; + } + .image{ + width: 68rpx; + height:68rpx; + background-color: #eee; + border-radius: 8rpx; + overflow: hidden; + } + .innerBox{ + height: 68rpx; + align-items: center; + margin-left: 24rpx; + box-sizing: border-box; + flex: 1; + display: flex; + justify-content: space-between; + .title{ + font-size: 32rpx; + font-weight: 500; + color: #323635; + flex: 1; + display: -webkit-box; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-orient:vertical; + -webkit-line-clamp:1; + } + .icon{ + margin-left: 24rpx; + width:24rpx; + height:24rpx; + &.hide{ + background: none; + } + } + } + +} diff --git a/src/pages/my/my.tsx b/src/pages/my/my.tsx index a784b3a..9561e3c 100644 --- a/src/pages/my/my.tsx +++ b/src/pages/my/my.tsx @@ -1,19 +1,85 @@ -import {View} from "@tarojs/components"; +import {PageContainer, View, Image} from "@tarojs/components"; import Taro from "@tarojs/taro"; import styles from './my.module.scss' import Header from "./components/header/header"; -import {FC} from "react"; +import {FC, useState} from "react"; import Time from "@/pages/my/components/header/time"; import Service from "@/pages/my/components/header/service"; +import {Profile} from "@/store"; +import Img from "@/components/image/image"; +import GreenNike from "@/static/img/greenNike.png" +import {userApi} from "@/api"; const My: FC = () => { const globalData = Taro.getApp().globalData + const {token, company, setCompany} = Profile.useContainer() + const [companyShow, setCompanyShow] = useState(false) + const [companyList, setCompanyList] = useState([]) + Taro.useDidShow(() => { + if(token){ + try { + userApi.companyList().then(res => { + setCompanyList(res as Company[]) + }) + } catch (e) { + } + } + + }) return ( -
-