current status OK

This commit is contained in:
echo 2025-12-11 23:25:50 +01:00
parent cbb1f52467
commit cdd854bd70
7 changed files with 320 additions and 145 deletions

Binary file not shown.

View File

@ -8,7 +8,7 @@
"name": "@fitai/mobile", "name": "@fitai/mobile",
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"@clerk/clerk-expo": "^2.18.3", "@clerk/clerk-expo": "^2.19.11",
"@expo/vector-icons": "^15.0.0", "@expo/vector-icons": "^15.0.0",
"@hookform/resolvers": "^3.3.0", "@hookform/resolvers": "^3.3.0",
"@react-native-async-storage/async-storage": "^2.2.0", "@react-native-async-storage/async-storage": "^2.2.0",
@ -19,11 +19,11 @@
"ajv-keywords": "^5.1.0", "ajv-keywords": "^5.1.0",
"axios": "^1.6.0", "axios": "^1.6.0",
"expo": "~54.0.23", "expo": "~54.0.23",
"expo-auth-session": "^7.0.8", "expo-auth-session": "^7.0.10",
"expo-barcode-scanner": "^13.0.1", "expo-barcode-scanner": "^13.0.1",
"expo-camera": "~17.0.9", "expo-camera": "~17.0.9",
"expo-constants": "^18.0.10", "expo-constants": "^18.0.10",
"expo-crypto": "^15.0.7", "expo-crypto": "^15.0.8",
"expo-font": "~14.0.9", "expo-font": "~14.0.9",
"expo-haptics": "^15.0.7", "expo-haptics": "^15.0.7",
"expo-linear-gradient": "~15.0.7", "expo-linear-gradient": "~15.0.7",
@ -32,9 +32,9 @@
"expo-router": "~6.0.14", "expo-router": "~6.0.14",
"expo-secure-store": "~15.0.7", "expo-secure-store": "~15.0.7",
"expo-status-bar": "^3.0.8", "expo-status-bar": "^3.0.8",
"expo-web-browser": "^15.0.9", "expo-web-browser": "^15.0.10",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "^19.1.0",
"react-hook-form": "^7.47.0", "react-hook-form": "^7.47.0",
"react-native": "0.81.5", "react-native": "0.81.5",
"react-native-safe-area-context": "~5.6.0", "react-native-safe-area-context": "~5.6.0",
@ -1563,15 +1563,15 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@clerk/clerk-expo": { "node_modules/@clerk/clerk-expo": {
"version": "2.18.3", "version": "2.19.11",
"resolved": "https://registry.npmjs.org/@clerk/clerk-expo/-/clerk-expo-2.18.3.tgz", "resolved": "https://registry.npmjs.org/@clerk/clerk-expo/-/clerk-expo-2.19.11.tgz",
"integrity": "sha512-lxlDiartLPhVjQiz88biCYa8+ZAv3dOOS0KXQnYn6M79UrO6cCcSO+o3QwEKMvwhiCEp0BcH7wnypU/GOXoB1Q==", "integrity": "sha512-zwCPDJm/WKe91rMGPequVKgGGWmUR/2OIR0IBqXg0hLaUFjEdce0hoB0QSVdc8TweC8djy+5vKVZIfQ2Tg6Vpg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@clerk/clerk-js": "^5.105.1", "@clerk/clerk-js": "^5.114.1",
"@clerk/clerk-react": "^5.53.8", "@clerk/clerk-react": "^5.58.1",
"@clerk/shared": "^3.31.1", "@clerk/shared": "^3.39.0",
"@clerk/types": "^4.97.2", "@clerk/types": "^4.101.6",
"base-64": "^1.0.0", "base-64": "^1.0.0",
"react-native-url-polyfill": "2.0.0", "react-native-url-polyfill": "2.0.0",
"tslib": "2.8.1" "tslib": "2.8.1"
@ -1610,14 +1610,14 @@
} }
}, },
"node_modules/@clerk/clerk-js": { "node_modules/@clerk/clerk-js": {
"version": "5.105.1", "version": "5.114.1",
"resolved": "https://registry.npmjs.org/@clerk/clerk-js/-/clerk-js-5.105.1.tgz", "resolved": "https://registry.npmjs.org/@clerk/clerk-js/-/clerk-js-5.114.1.tgz",
"integrity": "sha512-3ObGAARYsDjN4KS/FmCYvHL4FJtWjUdlDinUX1p1tPkFopPypiK9yhU+HSadpFTseLecc5TBnvuotJAAkQ2gGQ==", "integrity": "sha512-l3A9UZKWOI7rCz/P9o2bS4hSTRLzPqr9eAPxhBFsfUsGgzlxQjVeyRQ2XgOXfvwsgekmulVHzlbvGZidT7JF6A==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@base-org/account": "2.0.1", "@base-org/account": "2.0.1",
"@clerk/localizations": "^3.27.0", "@clerk/localizations": "^3.30.1",
"@clerk/shared": "^3.31.1", "@clerk/shared": "^3.39.0",
"@coinbase/wallet-sdk": "4.3.0", "@coinbase/wallet-sdk": "4.3.0",
"@emotion/cache": "11.11.0", "@emotion/cache": "11.11.0",
"@emotion/react": "11.11.1", "@emotion/react": "11.11.1",
@ -1637,8 +1637,7 @@
"dequal": "2.0.3", "dequal": "2.0.3",
"input-otp": "1.4.2", "input-otp": "1.4.2",
"qrcode.react": "4.2.0", "qrcode.react": "4.2.0",
"regenerator-runtime": "0.14.1", "regenerator-runtime": "0.14.1"
"swr": "2.3.4"
}, },
"engines": { "engines": {
"node": ">=18.17.0" "node": ">=18.17.0"
@ -1665,12 +1664,12 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@clerk/clerk-react": { "node_modules/@clerk/clerk-react": {
"version": "5.53.8", "version": "5.58.1",
"resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.53.8.tgz", "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.58.1.tgz",
"integrity": "sha512-TOiYk31rQUL9JOKZr/fhajf+fQCHicy1J4Rxq7vqtjHseJsnIBjzTigjOap/w8PrDAF28O6dbPC5CA0Tp7Md8w==", "integrity": "sha512-jN6mfuqwZakm99CKRQlTahMZEa8qLOpr3Z4lG6XtyJfIcyADleOdRxuOXYoN9sV8ZhNfDDAs+eKjUeusIzPpbg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@clerk/shared": "^3.31.1", "@clerk/shared": "^3.39.0",
"tslib": "2.8.1" "tslib": "2.8.1"
}, },
"engines": { "engines": {
@ -1682,21 +1681,21 @@
} }
}, },
"node_modules/@clerk/localizations": { "node_modules/@clerk/localizations": {
"version": "3.27.0", "version": "3.30.1",
"resolved": "https://registry.npmjs.org/@clerk/localizations/-/localizations-3.27.0.tgz", "resolved": "https://registry.npmjs.org/@clerk/localizations/-/localizations-3.30.1.tgz",
"integrity": "sha512-XQrzOtON32dXlTHEUwL0utTro6MePSM1gljCjRcY6RKh36I2BcuuG2XVu6K2HIvBL+Ef+nWF8+aU4+zc14nVcQ==", "integrity": "sha512-CHatnmQsGggsBMOO3k82oEh9E7j8Xs/vjFtx+hwGwM/qcJ6CEPmP69QKeRBfAXY5PcJinAuyYmFEqMEFvbyjSw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@clerk/types": "^4.97.2" "@clerk/types": "^4.101.6"
}, },
"engines": { "engines": {
"node": ">=18.17.0" "node": ">=18.17.0"
} }
}, },
"node_modules/@clerk/shared": { "node_modules/@clerk/shared": {
"version": "3.31.1", "version": "3.39.0",
"resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.31.1.tgz", "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.39.0.tgz",
"integrity": "sha512-mqxZqlzLJYJxA+ryLzhwFR0eO73teAvRd+wvA8bLUZLYvCRFvaiHsB9dEvbo9Z5bMYdq3NPwnx2uljMuu/tiQw==", "integrity": "sha512-9kqqXGMPAdMQ7SXo5ZwUhbzbLLQeLp/1jdb8FQS5qlhmL0S0bAYKcyDjcmMB8xZPXNc7vZJRT72QHsGSlUAJxw==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -1724,12 +1723,12 @@
} }
}, },
"node_modules/@clerk/types": { "node_modules/@clerk/types": {
"version": "4.97.2", "version": "4.101.6",
"resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.97.2.tgz", "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.101.6.tgz",
"integrity": "sha512-xnJq3xzpmuuDnNnWuUMKJLPPkaEaLDM0kiv2Hm0gKIcL1+1P3VaGf2vL9roIhmhLswB2PUwtVvZKBmGjT5yOVw==", "integrity": "sha512-Ah6R65loy5Aq1jBpWo3x01IOlYJfgVn4LVAkSXKVQDtehn8w1bT2uJ7BTa2zH72A8F4K2HivkmMQa+v/37tLFA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@clerk/shared": "^3.31.1" "@clerk/shared": "^3.39.0"
}, },
"engines": { "engines": {
"node": ">=18.17.0" "node": ">=18.17.0"
@ -2154,40 +2153,40 @@
} }
}, },
"node_modules/@expo/config": { "node_modules/@expo/config": {
"version": "12.0.10", "version": "12.0.12",
"resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.10.tgz", "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.12.tgz",
"integrity": "sha512-lJMof5Nqakq1DxGYlghYB/ogSBjmv4Fxn1ovyDmcjlRsQdFCXgu06gEUogkhPtc9wBt9WlTTfqENln5HHyLW6w==", "integrity": "sha512-X2MW86+ulLpMGvdgfvpl2EOBAKUlwvnvoPwdaZeeyWufGopn1nTUeh4C9gMsplDaP1kXv9sLXVhOoUoX6g9PvQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/code-frame": "~7.10.4", "@babel/code-frame": "~7.10.4",
"@expo/config-plugins": "~54.0.2", "@expo/config-plugins": "~54.0.3",
"@expo/config-types": "^54.0.8", "@expo/config-types": "^54.0.10",
"@expo/json-file": "^10.0.7", "@expo/json-file": "^10.0.8",
"deepmerge": "^4.3.1", "deepmerge": "^4.3.1",
"getenv": "^2.0.0", "getenv": "^2.0.0",
"glob": "^10.4.2", "glob": "^13.0.0",
"require-from-string": "^2.0.2", "require-from-string": "^2.0.2",
"resolve-from": "^5.0.0", "resolve-from": "^5.0.0",
"resolve-workspace-root": "^2.0.0", "resolve-workspace-root": "^2.0.0",
"semver": "^7.6.0", "semver": "^7.6.0",
"slugify": "^1.3.4", "slugify": "^1.3.4",
"sucrase": "3.35.0" "sucrase": "~3.35.1"
} }
}, },
"node_modules/@expo/config-plugins": { "node_modules/@expo/config-plugins": {
"version": "54.0.2", "version": "54.0.3",
"resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.2.tgz", "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.3.tgz",
"integrity": "sha512-jD4qxFcURQUVsUFGMcbo63a/AnviK8WUGard+yrdQE3ZrB/aurn68SlApjirQQLEizhjI5Ar2ufqflOBlNpyPg==", "integrity": "sha512-tBIUZIxLQfCu5jmqTO+UOeeDUGIB0BbK6xTMkPRObAXRQeTLPPfokZRCo818d2owd+Bcmq1wBaDz0VY3g+glfw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@expo/config-types": "^54.0.8", "@expo/config-types": "^54.0.9",
"@expo/json-file": "~10.0.7", "@expo/json-file": "~10.0.7",
"@expo/plist": "^0.4.7", "@expo/plist": "^0.4.7",
"@expo/sdk-runtime-versions": "^1.0.0", "@expo/sdk-runtime-versions": "^1.0.0",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"debug": "^4.3.5", "debug": "^4.3.5",
"getenv": "^2.0.0", "getenv": "^2.0.0",
"glob": "^10.4.2", "glob": "^13.0.0",
"resolve-from": "^5.0.0", "resolve-from": "^5.0.0",
"semver": "^7.5.4", "semver": "^7.5.4",
"slash": "^3.0.0", "slash": "^3.0.0",
@ -2197,20 +2196,57 @@
} }
}, },
"node_modules/@expo/config-plugins/node_modules/glob": { "node_modules/@expo/config-plugins/node_modules/glob": {
"version": "10.4.5", "version": "13.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
"license": "ISC", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"foreground-child": "^3.1.0", "minimatch": "^10.1.1",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2", "minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0"
"path-scurry": "^1.11.1"
}, },
"bin": { "engines": {
"glob": "dist/esm/bin.mjs" "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@expo/config-plugins/node_modules/lru-cache": {
"version": "11.2.4",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
"integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
"license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/@expo/config-plugins/node_modules/minimatch": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/brace-expansion": "^5.0.0"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@expo/config-plugins/node_modules/path-scurry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
"integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
"license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^11.0.0",
"minipass": "^7.1.2"
},
"engines": {
"node": "20 || >=22"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
@ -2229,9 +2265,9 @@
} }
}, },
"node_modules/@expo/config-types": { "node_modules/@expo/config-types": {
"version": "54.0.8", "version": "54.0.10",
"resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.8.tgz", "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz",
"integrity": "sha512-lyIn/x/Yz0SgHL7IGWtgTLg6TJWC9vL7489++0hzCHZ4iGjVcfZmPTUfiragZ3HycFFj899qN0jlhl49IHa94A==", "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@expo/config/node_modules/@babel/code-frame": { "node_modules/@expo/config/node_modules/@babel/code-frame": {
@ -2244,20 +2280,57 @@
} }
}, },
"node_modules/@expo/config/node_modules/glob": { "node_modules/@expo/config/node_modules/glob": {
"version": "10.4.5", "version": "13.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
"license": "ISC", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"foreground-child": "^3.1.0", "minimatch": "^10.1.1",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2", "minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0"
"path-scurry": "^1.11.1"
}, },
"bin": { "engines": {
"glob": "dist/esm/bin.mjs" "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@expo/config/node_modules/lru-cache": {
"version": "11.2.4",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
"integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
"license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/@expo/config/node_modules/minimatch": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/brace-expansion": "^5.0.0"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@expo/config/node_modules/path-scurry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
"integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
"license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^11.0.0",
"minipass": "^7.1.2"
},
"engines": {
"node": "20 || >=22"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
@ -2337,9 +2410,9 @@
} }
}, },
"node_modules/@expo/env": { "node_modules/@expo/env": {
"version": "2.0.7", "version": "2.0.8",
"resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.7.tgz", "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz",
"integrity": "sha512-BNETbLEohk3HQ2LxwwezpG8pq+h7Fs7/vAMP3eAtFT1BCpprLYoBBFZH7gW4aqGfqOcVP4Lc91j014verrYNGg==", "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chalk": "^4.0.0", "chalk": "^4.0.0",
@ -2434,9 +2507,9 @@
} }
}, },
"node_modules/@expo/json-file": { "node_modules/@expo/json-file": {
"version": "10.0.7", "version": "10.0.8",
"resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.7.tgz", "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz",
"integrity": "sha512-z2OTC0XNO6riZu98EjdNHC05l51ySeTto6GP7oSQrCvQgG9ARBwD1YvMQaVZ9wU7p/4LzSf1O7tckL3B45fPpw==", "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/code-frame": "~7.10.4", "@babel/code-frame": "~7.10.4",
@ -2879,6 +2952,27 @@
"integrity": "sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g==", "integrity": "sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@isaacs/balanced-match": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
"license": "MIT",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/@isaacs/brace-expansion": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
"integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
"license": "MIT",
"dependencies": {
"@isaacs/balanced-match": "^4.0.1"
},
"engines": {
"node": "20 || >=22"
}
},
"node_modules/@isaacs/cliui": { "node_modules/@isaacs/cliui": {
"version": "8.0.2", "version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@ -5022,9 +5116,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/abitype": { "node_modules/abitype": {
"version": "1.1.1", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.2.tgz",
"integrity": "sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q==", "integrity": "sha512-4DOIMWscIB3j8hboLAUjLZCE8TMLdgecBpHFumfU4PdO/C1SBCVx4Nu1wPYXaL2iK8B0Jk3tiwnDLCpUtm3fZg==",
"license": "MIT", "license": "MIT",
"funding": { "funding": {
"url": "https://github.com/sponsors/wevm" "url": "https://github.com/sponsors/wevm"
@ -7163,9 +7257,9 @@
} }
}, },
"node_modules/expo-application": { "node_modules/expo-application": {
"version": "7.0.7", "version": "7.0.8",
"resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.7.tgz", "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz",
"integrity": "sha512-Jt1/qqnoDUbZ+bK91+dHaZ1vrPDtRBOltRa681EeedkisqguuEeUx4UHqwVyDK2oHWsK6lO3ojetoA4h8OmNcg==", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"expo": "*" "expo": "*"
@ -7187,16 +7281,16 @@
} }
}, },
"node_modules/expo-auth-session": { "node_modules/expo-auth-session": {
"version": "7.0.9", "version": "7.0.10",
"resolved": "https://registry.npmjs.org/expo-auth-session/-/expo-auth-session-7.0.9.tgz", "resolved": "https://registry.npmjs.org/expo-auth-session/-/expo-auth-session-7.0.10.tgz",
"integrity": "sha512-mPSwaRWOJYas160lXi5P/7BkLy0xbh+er+IMmAYHqf2+iz2WWs9W/4lMAklQVJG2mCyOZi24XrkffvB2izCa1g==", "integrity": "sha512-XDnKkudvhHSKkZfJ+KkodM+anQcrxB71i+h0kKabdLa5YDXTQ81aC38KRc3TMqmnBDHAu0NpfbzEVd9WDFY3Qg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"expo-application": "~7.0.7", "expo-application": "~7.0.8",
"expo-constants": "~18.0.10", "expo-constants": "~18.0.11",
"expo-crypto": "~15.0.7", "expo-crypto": "~15.0.8",
"expo-linking": "~8.0.9", "expo-linking": "~8.0.10",
"expo-web-browser": "~15.0.9", "expo-web-browser": "~15.0.10",
"invariant": "^2.2.4" "invariant": "^2.2.4"
}, },
"peerDependencies": { "peerDependencies": {
@ -7237,13 +7331,13 @@
} }
}, },
"node_modules/expo-constants": { "node_modules/expo-constants": {
"version": "18.0.10", "version": "18.0.11",
"resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.11.tgz",
"integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==", "integrity": "sha512-xnfrfZ7lHjb+03skhmDSYeFF7OU2K3Xn/lAeP+7RhkV2xp2f5RCKtOUYajCnYeZesvMrsUxOsbGOP2JXSOH3NA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@expo/config": "~12.0.10", "@expo/config": "~12.0.11",
"@expo/env": "~2.0.7" "@expo/env": "~2.0.8"
}, },
"peerDependencies": { "peerDependencies": {
"expo": "*", "expo": "*",
@ -7251,9 +7345,9 @@
} }
}, },
"node_modules/expo-crypto": { "node_modules/expo-crypto": {
"version": "15.0.7", "version": "15.0.8",
"resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-15.0.7.tgz", "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-15.0.8.tgz",
"integrity": "sha512-FUo41TwwGT2e5rA45PsjezI868Ch3M6wbCZsmqTWdF/hr+HyPcrp1L//dsh/hsrsyrQdpY/U96Lu71/wXePJeg==", "integrity": "sha512-aF7A914TB66WIlTJvl5J6/itejfY78O7dq3ibvFltL9vnTALJ/7LYHvLT4fwmx9yUNS6ekLBtDGWivFWnj2Fcw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"base64-js": "^1.3.0" "base64-js": "^1.3.0"
@ -7316,12 +7410,12 @@
} }
}, },
"node_modules/expo-linking": { "node_modules/expo-linking": {
"version": "8.0.9", "version": "8.0.10",
"resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.9.tgz", "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.10.tgz",
"integrity": "sha512-a0UHhlVyfwIbn8b1PSFPoFiIDJeps2iEq109hVH3CHd0CMKuRxFfNio9Axe2BjXhiJCYWR4OV1iIyzY/GjiVkQ==", "integrity": "sha512-0EKtn4Sk6OYmb/5ZqK8riO0k1Ic+wyT3xExbmDvUYhT7p/cKqlVUExMuOIAt3Cx3KUUU1WCgGmdd493W/D5XjA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"expo-constants": "~18.0.10", "expo-constants": "~18.0.11",
"invariant": "^2.2.4" "invariant": "^2.2.4"
}, },
"peerDependencies": { "peerDependencies": {
@ -7462,9 +7556,9 @@
} }
}, },
"node_modules/expo-secure-store": { "node_modules/expo-secure-store": {
"version": "15.0.7", "version": "15.0.8",
"resolved": "https://registry.npmjs.org/expo-secure-store/-/expo-secure-store-15.0.7.tgz", "resolved": "https://registry.npmjs.org/expo-secure-store/-/expo-secure-store-15.0.8.tgz",
"integrity": "sha512-9q7+G1Zxr5P6J5NRIlm86KulvmYwc6UnQlYPjQLDu1drDnerz6AT6l884dPu29HgtDTn4rR0heYeeGFhMKM7/Q==", "integrity": "sha512-lHnzvRajBu4u+P99+0GEMijQMFCOYpWRO4dWsXSuMt77+THPIGjzNvVKrGSl6mMrLsfVaKL8BpwYZLGlgA+zAw==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"expo": "*" "expo": "*"
@ -7493,9 +7587,9 @@
} }
}, },
"node_modules/expo-web-browser": { "node_modules/expo-web-browser": {
"version": "15.0.9", "version": "15.0.10",
"resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-15.0.9.tgz", "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-15.0.10.tgz",
"integrity": "sha512-Dj8kNFO+oXsxqCDNlUT/GhOrJnm10kAElH++3RplLydogFm5jTzXYWDEeNIDmV+F+BzGYs+sIhxiBf7RyaxXZg==", "integrity": "sha512-fvDhW4bhmXAeWFNFiInmsGCK83PAqAcQaFyp/3pE/jbdKmFKoRCWr46uZGIfN4msLK/OODhaQ/+US7GSJNDHJg==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"expo": "*", "expo": "*",
@ -7641,6 +7735,23 @@
"asap": "~2.0.3" "asap": "~2.0.3"
} }
}, },
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"license": "MIT",
"engines": {
"node": ">=12.0.0"
},
"peerDependencies": {
"picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
"picomatch": {
"optional": true
}
}
},
"node_modules/file-entry-cache": { "node_modules/file-entry-cache": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@ -12786,17 +12897,17 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/sucrase": { "node_modules/sucrase": {
"version": "3.35.0", "version": "3.35.1",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
"integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0", "commander": "^4.0.0",
"glob": "^10.3.10",
"lines-and-columns": "^1.1.6", "lines-and-columns": "^1.1.6",
"mz": "^2.7.0", "mz": "^2.7.0",
"pirates": "^4.0.1", "pirates": "^4.0.1",
"tinyglobby": "^0.2.11",
"ts-interface-checker": "^0.1.9" "ts-interface-checker": "^0.1.9"
}, },
"bin": { "bin": {
@ -12816,26 +12927,6 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/sucrase/node_modules/glob": {
"version": "10.4.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/supports-color": { "node_modules/supports-color": {
"version": "7.2.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@ -13036,6 +13127,34 @@
"integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/tinyglobby": {
"version": "0.2.15",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
"picomatch": "^4.0.3"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/tinyglobby/node_modules/picomatch": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/tmpl": { "node_modules/tmpl": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@ -13429,9 +13548,9 @@
} }
}, },
"node_modules/viem": { "node_modules/viem": {
"version": "2.38.6", "version": "2.41.2",
"resolved": "https://registry.npmjs.org/viem/-/viem-2.38.6.tgz", "resolved": "https://registry.npmjs.org/viem/-/viem-2.41.2.tgz",
"integrity": "sha512-aqO6P52LPXRjdnP6rl5Buab65sYa4cZ6Cpn+k4OLOzVJhGIK8onTVoKMFMT04YjDfyDICa/DZyV9HmvLDgcjkw==", "integrity": "sha512-LYliajglBe1FU6+EH9mSWozp+gRA/QcHfxeD9Odf83AdH5fwUS7DroH4gHvlv6Sshqi1uXrYFA2B/EOczxd15g==",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",

View File

@ -14,7 +14,7 @@
"test": "jest" "test": "jest"
}, },
"dependencies": { "dependencies": {
"@clerk/clerk-expo": "^2.18.3", "@clerk/clerk-expo": "^2.19.11",
"@expo/vector-icons": "^15.0.0", "@expo/vector-icons": "^15.0.0",
"@hookform/resolvers": "^3.3.0", "@hookform/resolvers": "^3.3.0",
"@react-native-async-storage/async-storage": "^2.2.0", "@react-native-async-storage/async-storage": "^2.2.0",
@ -25,11 +25,11 @@
"ajv-keywords": "^5.1.0", "ajv-keywords": "^5.1.0",
"axios": "^1.6.0", "axios": "^1.6.0",
"expo": "~54.0.23", "expo": "~54.0.23",
"expo-auth-session": "^7.0.8", "expo-auth-session": "^7.0.10",
"expo-barcode-scanner": "^13.0.1", "expo-barcode-scanner": "^13.0.1",
"expo-camera": "~17.0.9", "expo-camera": "~17.0.9",
"expo-constants": "^18.0.10", "expo-constants": "^18.0.10",
"expo-crypto": "^15.0.7", "expo-crypto": "^15.0.8",
"expo-font": "~14.0.9", "expo-font": "~14.0.9",
"expo-haptics": "^15.0.7", "expo-haptics": "^15.0.7",
"expo-linear-gradient": "~15.0.7", "expo-linear-gradient": "~15.0.7",
@ -38,9 +38,9 @@
"expo-router": "~6.0.14", "expo-router": "~6.0.14",
"expo-secure-store": "~15.0.7", "expo-secure-store": "~15.0.7",
"expo-status-bar": "^3.0.8", "expo-status-bar": "^3.0.8",
"expo-web-browser": "^15.0.9", "expo-web-browser": "^15.0.10",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "^19.1.0",
"react-hook-form": "^7.47.0", "react-hook-form": "^7.47.0",
"react-native": "0.81.5", "react-native": "0.81.5",
"react-native-safe-area-context": "~5.6.0", "react-native-safe-area-context": "~5.6.0",

View File

@ -1,5 +1,5 @@
export const API_BASE_URL = __DEV__ export const API_BASE_URL = __DEV__
? 'https://8679109544e4.ngrok-free.app' ? 'https://5e424f097c8b.ngrok-free.app'
: 'https://your-production-url.com' : 'https://your-production-url.com'
export const API_ENDPOINTS = { export const API_ENDPOINTS = {

53
nextstepts0210.md Normal file
View File

@ -0,0 +1,53 @@
# Analysis and Next Steps
## Current State Analysis
### Architecture
- **Monorepo Structure**: The project is well-structured as a monorepo with `apps/admin` (Next.js), `apps/mobile` (Expo), and shared packages (`database`, `shared`).
- **Database Inconsistency**: There is a significant architectural inconsistency in database access.
- `packages/database` defines a Drizzle ORM schema and exports a Drizzle instance.
- `apps/admin` implements a custom `SQLiteDatabase` class (`src/lib/database/sqlite.ts`) that uses `better-sqlite3` directly with raw SQL queries and manual object mapping.
- This leads to code duplication, potential schema drift (if Drizzle schema changes but raw SQL doesn't), and loss of Drizzle's type safety and convenience features.
### Code Quality
- **Type Safety**:
- `UserManagement.tsx` defines local interfaces (e.g., `User`) that duplicate the schema definitions.
- Shared types should be utilized from `@fitai/shared` or `@fitai/database`.
- **Configuration**:
- `apps/mobile/src/config/api.ts` contains hardcoded URLs (e.g., ngrok) which is brittle for development and production.
- API routes in `apps/admin` contain `console.log` statements that should be removed or replaced with a proper logging solution.
- **Error Handling**:
- Basic error handling exists in API routes, but could be standardized (e.g., custom error classes, consistent error response format).
### Testing
- **Missing Tests**: While `jest` is configured in `apps/admin`, there are no actual test files in `src`. The critical business logic in `src/lib/database` and API routes is currently untested.
## Suggested Next Steps
### 1. Unify Database Access (High Priority)
Refactor `apps/admin` to use the Drizzle ORM instance from `@fitai/database` instead of the custom `SQLiteDatabase` class.
- **Benefits**: Removes ~800 lines of raw SQL code, ensures type safety, reduces maintenance burden, and leverages Drizzle's features.
- **Action**: Replace `src/lib/database/sqlite.ts` methods with Drizzle queries using the schema from `@fitai/database`.
### 2. Implement Testing Strategy (High Priority)
Start adding tests for critical paths.
- **Unit Tests**: Add Jest tests for the database logic (if keeping the custom class temporarily) or the service layer.
- **Integration Tests**: Test API routes (`/api/attendance/*`, `/api/users`) to ensure they handle requests correctly.
- **Action**: Create `__tests__` directories in `apps/admin/src` and add initial tests for attendance flows.
### 3. Improve Configuration Management (Medium Priority)
- **Mobile**: Use environment variables (e.g., `EXPO_PUBLIC_API_URL`) for the API base URL in the mobile app instead of hardcoding.
- **Admin**: Ensure all secrets and config values are strictly in `.env` files.
### 4. Enhance Type Safety (Medium Priority)
- **Shared Types**: Move the `User` interface and other shared entities from `UserManagement.tsx` to `@fitai/shared` or use the inferred types from Drizzle schema in `@fitai/database`.
- **Action**: Refactor components to import types from the shared package.
### 5. Cleanup and Standardization (Low Priority)
- Remove `console.log` from production code.
- Standardize API error responses.
## Immediate Action Items
1. **Create a reproduction test case** for the current attendance flow to ensure no regressions during refactoring.
2. **Refactor one module** (e.g., Attendance) to use Drizzle ORM as a proof of concept for the migration.
3. **Extract types** from `UserManagement.tsx` to `@fitai/shared`.

7
package-lock.json generated
View File

@ -991,6 +991,7 @@
"integrity": "sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==", "integrity": "sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/scope-manager": "8.46.3",
"@typescript-eslint/types": "8.46.3", "@typescript-eslint/types": "8.46.3",
@ -1196,6 +1197,7 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
}, },
@ -1628,6 +1630,7 @@
"integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1", "@eslint-community/regexpp": "^4.12.1",
@ -2792,8 +2795,7 @@
"version": "0.27.0", "version": "0.27.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/semver": { "node_modules/semver": {
"version": "7.7.3", "version": "7.7.3",
@ -3132,6 +3134,7 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"

0
projectManagment.md Normal file
View File