mirror of
https://github.com/Nezumi-2711/react-training.git
synced 2026-09-22 20:01:59 +00:00
Implement supabase and update user service
This commit is contained in:
@@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
. "$(dirname -- "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
cd ./hotel-management && npx lint-staged
|
|
||||||
@@ -7,27 +7,12 @@
|
|||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview"
|
||||||
"prepare": "cd .. && husky install hotel-management/.husky",
|
|
||||||
"format": "prettier --write \"src/**/*.{ts,tsx}\""
|
|
||||||
},
|
|
||||||
"husky": {
|
|
||||||
"hooks": {
|
|
||||||
"pre-commit": "lint-staged"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"*.tsx": [
|
|
||||||
"pnpm run lint",
|
|
||||||
"pnpm run format"
|
|
||||||
],
|
|
||||||
"*.ts": [
|
|
||||||
"pnpm run lint",
|
|
||||||
"pnpm run format"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/is-prop-valid": "^1.2.1",
|
"@emotion/is-prop-valid": "^1.2.1",
|
||||||
|
"@supabase/supabase-js": "^2.38.4",
|
||||||
|
"@tanstack/react-query": "^5.8.4",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-hook-form": "^7.47.0",
|
"react-hook-form": "^7.47.0",
|
||||||
@@ -46,8 +31,6 @@
|
|||||||
"eslint": "^8.51.0",
|
"eslint": "^8.51.0",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"eslint-plugin-react-refresh": "^0.4.3",
|
"eslint-plugin-react-refresh": "^0.4.3",
|
||||||
"husky": "^8.0.0",
|
|
||||||
"lint-staged": "^15.0.1",
|
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"vite": "^4.4.5",
|
"vite": "^4.4.5",
|
||||||
"vite-tsconfig-paths": "^4.2.1"
|
"vite-tsconfig-paths": "^4.2.1"
|
||||||
|
|||||||
Generated
+227
-267
@@ -8,6 +8,12 @@ dependencies:
|
|||||||
'@emotion/is-prop-valid':
|
'@emotion/is-prop-valid':
|
||||||
specifier: ^1.2.1
|
specifier: ^1.2.1
|
||||||
version: 1.2.1
|
version: 1.2.1
|
||||||
|
'@supabase/supabase-js':
|
||||||
|
specifier: ^2.38.4
|
||||||
|
version: 2.38.4
|
||||||
|
'@tanstack/react-query':
|
||||||
|
specifier: ^5.8.4
|
||||||
|
version: 5.8.4(react-dom@18.2.0)(react@18.2.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^18.2.0
|
specifier: ^18.2.0
|
||||||
version: 18.2.0
|
version: 18.2.0
|
||||||
@@ -58,12 +64,6 @@ devDependencies:
|
|||||||
eslint-plugin-react-refresh:
|
eslint-plugin-react-refresh:
|
||||||
specifier: ^0.4.3
|
specifier: ^0.4.3
|
||||||
version: 0.4.3(eslint@8.51.0)
|
version: 0.4.3(eslint@8.51.0)
|
||||||
husky:
|
|
||||||
specifier: ^8.0.0
|
|
||||||
version: 8.0.3
|
|
||||||
lint-staged:
|
|
||||||
specifier: ^15.0.1
|
|
||||||
version: 15.0.1
|
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.0.2
|
specifier: ^5.0.2
|
||||||
version: 5.2.2
|
version: 5.2.2
|
||||||
@@ -630,6 +630,82 @@ packages:
|
|||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/functions-js@2.1.5:
|
||||||
|
resolution: {integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==}
|
||||||
|
dependencies:
|
||||||
|
'@supabase/node-fetch': 2.6.15
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/gotrue-js@2.57.0:
|
||||||
|
resolution: {integrity: sha512-/CcAW40aPKgp9/w9WgXVUQFg1AOdvFR687ONOMjASPBuC6FsNbKlcXp4pc+rwKNtxyxDkBbR+x7zj/8g00r/Og==}
|
||||||
|
dependencies:
|
||||||
|
'@supabase/node-fetch': 2.6.15
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/node-fetch@2.6.15:
|
||||||
|
resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==}
|
||||||
|
engines: {node: 4.x || >=6.0.0}
|
||||||
|
dependencies:
|
||||||
|
whatwg-url: 5.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/postgrest-js@1.8.5:
|
||||||
|
resolution: {integrity: sha512-XvoqN5e5Z4TsQOYWLQYLW0HIlZtFSzwAcwiuToaSBSTpLOGCg4NaZ7au5GfBzCQJZdZPY5vk5FvwthfDsQK/Jw==}
|
||||||
|
dependencies:
|
||||||
|
'@supabase/node-fetch': 2.6.15
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/realtime-js@2.8.4:
|
||||||
|
resolution: {integrity: sha512-5C9slLTGikHnYmAnIBOaPogAgbcNY68vnIyE6GpqIKjHElVb6LIi4clwNcjHSj4z6szuvvzj8T/+ePEgGEGekw==}
|
||||||
|
dependencies:
|
||||||
|
'@supabase/node-fetch': 2.6.15
|
||||||
|
'@types/phoenix': 1.6.4
|
||||||
|
'@types/websocket': 1.0.9
|
||||||
|
websocket: 1.0.34
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/storage-js@2.5.4:
|
||||||
|
resolution: {integrity: sha512-yspHD19I9uQUgfTh0J94+/r/g6hnhdQmw6Y7OWqr/EbnL6uvicGV1i1UDkkmeUHqfF9Mbt2sLtuxRycYyKv2ew==}
|
||||||
|
dependencies:
|
||||||
|
'@supabase/node-fetch': 2.6.15
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@supabase/supabase-js@2.38.4:
|
||||||
|
resolution: {integrity: sha512-bYwxm/GosvRqOMIv6YP7qUTZWi/trgHtDWUEZDEmyRHW24d0JYIb1GOt6RaO2hsWlecn88DAJIpjoNbprocgRA==}
|
||||||
|
dependencies:
|
||||||
|
'@supabase/functions-js': 2.1.5
|
||||||
|
'@supabase/gotrue-js': 2.57.0
|
||||||
|
'@supabase/node-fetch': 2.6.15
|
||||||
|
'@supabase/postgrest-js': 1.8.5
|
||||||
|
'@supabase/realtime-js': 2.8.4
|
||||||
|
'@supabase/storage-js': 2.5.4
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@tanstack/query-core@5.8.3:
|
||||||
|
resolution: {integrity: sha512-SWFMFtcHfttLYif6pevnnMYnBvxKf3C+MHMH7bevyYfpXpTMsLB9O6nNGBdWSoPwnZRXFNyNeVZOw25Wmdasow==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@tanstack/react-query@5.8.4(react-dom@18.2.0)(react@18.2.0):
|
||||||
|
resolution: {integrity: sha512-CD+AkXzg8J72JrE6ocmuBEJfGzEzu/bzkD6sFXFDDB5yji9N20JofXZlN6n0+CaPJuIi+e4YLCbGsyPFKkfNQA==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^18.0.0
|
||||||
|
react-dom: ^18.0.0
|
||||||
|
react-native: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
react-dom:
|
||||||
|
optional: true
|
||||||
|
react-native:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@tanstack/query-core': 5.8.3
|
||||||
|
react: 18.2.0
|
||||||
|
react-dom: 18.2.0(react@18.2.0)
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/babel__core@7.20.2:
|
/@types/babel__core@7.20.2:
|
||||||
resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==}
|
resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -663,6 +739,16 @@ packages:
|
|||||||
resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
|
resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/node@20.9.1:
|
||||||
|
resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==}
|
||||||
|
dependencies:
|
||||||
|
undici-types: 5.26.5
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@types/phoenix@1.6.4:
|
||||||
|
resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/prop-types@15.7.9:
|
/@types/prop-types@15.7.9:
|
||||||
resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==}
|
resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -693,6 +779,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-Rm17MsTpQQP5Jq4BF7CdrxJsDufoiL/q5IbJZYZmOZAJALyijgF7BzLgobXUqraNcQdqFYLYGeglDp6QzaxPpg==}
|
resolution: {integrity: sha512-Rm17MsTpQQP5Jq4BF7CdrxJsDufoiL/q5IbJZYZmOZAJALyijgF7BzLgobXUqraNcQdqFYLYGeglDp6QzaxPpg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@types/websocket@1.0.9:
|
||||||
|
resolution: {integrity: sha512-xrMBdqdKdlE+7L9Wg2PQblIkZGSgiMlEoP6UAaYKMHbbxqCJ6PV/pTZ2RcMcSSERurU2TtGbmO4lqpFOJd01ww==}
|
||||||
|
dependencies:
|
||||||
|
'@types/node': 20.9.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2):
|
/@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2):
|
||||||
resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==}
|
resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==}
|
||||||
engines: {node: ^16.0.0 || >=18.0.0}
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
@@ -872,23 +964,11 @@ packages:
|
|||||||
uri-js: 4.4.1
|
uri-js: 4.4.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/ansi-escapes@5.0.0:
|
|
||||||
resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
type-fest: 1.4.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ansi-regex@5.0.1:
|
/ansi-regex@5.0.1:
|
||||||
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/ansi-regex@6.0.1:
|
|
||||||
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ansi-styles@3.2.1:
|
/ansi-styles@3.2.1:
|
||||||
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
|
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -903,11 +983,6 @@ packages:
|
|||||||
color-convert: 2.0.1
|
color-convert: 2.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/ansi-styles@6.2.1:
|
|
||||||
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/argparse@2.0.1:
|
/argparse@2.0.1:
|
||||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -946,6 +1021,14 @@ packages:
|
|||||||
update-browserslist-db: 1.0.13(browserslist@4.22.1)
|
update-browserslist-db: 1.0.13(browserslist@4.22.1)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/bufferutil@4.0.8:
|
||||||
|
resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
|
||||||
|
engines: {node: '>=6.14.2'}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
node-gyp-build: 4.6.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/callsites@3.1.0:
|
/callsites@3.1.0:
|
||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -976,26 +1059,6 @@ packages:
|
|||||||
supports-color: 7.2.0
|
supports-color: 7.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/chalk@5.3.0:
|
|
||||||
resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
|
|
||||||
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/cli-cursor@4.0.0:
|
|
||||||
resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
|
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
|
||||||
dependencies:
|
|
||||||
restore-cursor: 4.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/cli-truncate@3.1.0:
|
|
||||||
resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
|
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
|
||||||
dependencies:
|
|
||||||
slice-ansi: 5.0.0
|
|
||||||
string-width: 5.1.2
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/color-convert@1.9.3:
|
/color-convert@1.9.3:
|
||||||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1017,15 +1080,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/colorette@2.0.20:
|
|
||||||
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/commander@11.1.0:
|
|
||||||
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/concat-map@0.0.1:
|
/concat-map@0.0.1:
|
||||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1059,6 +1113,24 @@ packages:
|
|||||||
/csstype@3.1.2:
|
/csstype@3.1.2:
|
||||||
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
|
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
|
||||||
|
|
||||||
|
/d@1.0.1:
|
||||||
|
resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==}
|
||||||
|
dependencies:
|
||||||
|
es5-ext: 0.10.62
|
||||||
|
type: 1.2.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/debug@2.6.9:
|
||||||
|
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
|
||||||
|
peerDependencies:
|
||||||
|
supports-color: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
supports-color:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
ms: 2.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/debug@4.3.4:
|
/debug@4.3.4:
|
||||||
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
||||||
engines: {node: '>=6.0'}
|
engines: {node: '>=6.0'}
|
||||||
@@ -1089,17 +1161,34 @@ packages:
|
|||||||
esutils: 2.0.3
|
esutils: 2.0.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eastasianwidth@0.2.0:
|
|
||||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/electron-to-chromium@1.4.554:
|
/electron-to-chromium@1.4.554:
|
||||||
resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==}
|
resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/emoji-regex@9.2.2:
|
/es5-ext@0.10.62:
|
||||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==}
|
||||||
dev: true
|
engines: {node: '>=0.10'}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
es6-iterator: 2.0.3
|
||||||
|
es6-symbol: 3.1.3
|
||||||
|
next-tick: 1.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/es6-iterator@2.0.3:
|
||||||
|
resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
|
||||||
|
dependencies:
|
||||||
|
d: 1.0.1
|
||||||
|
es5-ext: 0.10.62
|
||||||
|
es6-symbol: 3.1.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/es6-symbol@3.1.3:
|
||||||
|
resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==}
|
||||||
|
dependencies:
|
||||||
|
d: 1.0.1
|
||||||
|
ext: 1.7.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/esbuild@0.18.20:
|
/esbuild@0.18.20:
|
||||||
resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
|
resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
|
||||||
@@ -1255,24 +1344,11 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eventemitter3@5.0.1:
|
/ext@1.7.0:
|
||||||
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/execa@8.0.1:
|
|
||||||
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
|
|
||||||
engines: {node: '>=16.17'}
|
|
||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn: 7.0.3
|
type: 2.7.2
|
||||||
get-stream: 8.0.1
|
dev: false
|
||||||
human-signals: 5.0.0
|
|
||||||
is-stream: 3.0.0
|
|
||||||
merge-stream: 2.0.0
|
|
||||||
npm-run-path: 5.1.0
|
|
||||||
onetime: 6.0.0
|
|
||||||
signal-exit: 4.1.0
|
|
||||||
strip-final-newline: 3.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/fast-deep-equal@3.1.3:
|
/fast-deep-equal@3.1.3:
|
||||||
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
||||||
@@ -1355,11 +1431,6 @@ packages:
|
|||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/get-stream@8.0.1:
|
|
||||||
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/glob-parent@5.1.2:
|
/glob-parent@5.1.2:
|
||||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
@@ -1435,17 +1506,6 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/human-signals@5.0.0:
|
|
||||||
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
|
|
||||||
engines: {node: '>=16.17.0'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/husky@8.0.3:
|
|
||||||
resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
|
|
||||||
engines: {node: '>=14'}
|
|
||||||
hasBin: true
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ignore@5.2.4:
|
/ignore@5.2.4:
|
||||||
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
|
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
@@ -1480,11 +1540,6 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/is-fullwidth-code-point@4.0.0:
|
|
||||||
resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/is-glob@4.0.3:
|
/is-glob@4.0.3:
|
||||||
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -1502,10 +1557,9 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/is-stream@3.0.0:
|
/is-typedarray@1.0.0:
|
||||||
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
|
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
dev: false
|
||||||
dev: true
|
|
||||||
|
|
||||||
/isexe@2.0.0:
|
/isexe@2.0.0:
|
||||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||||
@@ -1559,42 +1613,6 @@ packages:
|
|||||||
type-check: 0.4.0
|
type-check: 0.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/lilconfig@2.1.0:
|
|
||||||
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
|
|
||||||
engines: {node: '>=10'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/lint-staged@15.0.1:
|
|
||||||
resolution: {integrity: sha512-2IU5OWmCaxch0X0+IBF4/v7sutpB+F3qoXbro43pYjQTOo5wumckjxoxn47pQBqqBsCWrD5HnI2uG/zJA7isew==}
|
|
||||||
engines: {node: '>=18.12.0'}
|
|
||||||
hasBin: true
|
|
||||||
dependencies:
|
|
||||||
chalk: 5.3.0
|
|
||||||
commander: 11.1.0
|
|
||||||
debug: 4.3.4
|
|
||||||
execa: 8.0.1
|
|
||||||
lilconfig: 2.1.0
|
|
||||||
listr2: 7.0.1
|
|
||||||
micromatch: 4.0.5
|
|
||||||
pidtree: 0.6.0
|
|
||||||
string-argv: 0.3.2
|
|
||||||
yaml: 2.3.2
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/listr2@7.0.1:
|
|
||||||
resolution: {integrity: sha512-nz+7hwgbDp8eWNoDgzdl4hA/xDSLrNRzPu1TLgOYs6l5Y+Ma6zVWWy9Oyt9TQFONwKoSPoka3H50D3vD5EuNwg==}
|
|
||||||
engines: {node: '>=16.0.0'}
|
|
||||||
dependencies:
|
|
||||||
cli-truncate: 3.1.0
|
|
||||||
colorette: 2.0.20
|
|
||||||
eventemitter3: 5.0.1
|
|
||||||
log-update: 5.0.1
|
|
||||||
rfdc: 1.3.0
|
|
||||||
wrap-ansi: 8.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/locate-path@6.0.0:
|
/locate-path@6.0.0:
|
||||||
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -1610,17 +1628,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/log-update@5.0.1:
|
|
||||||
resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==}
|
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
|
||||||
dependencies:
|
|
||||||
ansi-escapes: 5.0.0
|
|
||||||
cli-cursor: 4.0.0
|
|
||||||
slice-ansi: 5.0.0
|
|
||||||
strip-ansi: 7.1.0
|
|
||||||
wrap-ansi: 8.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/loose-envify@1.4.0:
|
/loose-envify@1.4.0:
|
||||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -1640,10 +1647,6 @@ packages:
|
|||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/merge-stream@2.0.0:
|
|
||||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/merge2@1.4.1:
|
/merge2@1.4.1:
|
||||||
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -1657,22 +1660,16 @@ packages:
|
|||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/mimic-fn@2.1.0:
|
|
||||||
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
|
||||||
engines: {node: '>=6'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/mimic-fn@4.0.0:
|
|
||||||
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/minimatch@3.1.2:
|
/minimatch@3.1.2:
|
||||||
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
|
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion: 1.1.11
|
brace-expansion: 1.1.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/ms@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ms@2.1.2:
|
/ms@2.1.2:
|
||||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1686,37 +1683,25 @@ packages:
|
|||||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/next-tick@1.1.0:
|
||||||
|
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/node-gyp-build@4.6.1:
|
||||||
|
resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/node-releases@2.0.13:
|
/node-releases@2.0.13:
|
||||||
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
|
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/npm-run-path@5.1.0:
|
|
||||||
resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
|
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
|
||||||
dependencies:
|
|
||||||
path-key: 4.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/once@1.4.0:
|
/once@1.4.0:
|
||||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
wrappy: 1.0.2
|
wrappy: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/onetime@5.1.2:
|
|
||||||
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
|
||||||
engines: {node: '>=6'}
|
|
||||||
dependencies:
|
|
||||||
mimic-fn: 2.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/onetime@6.0.0:
|
|
||||||
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
mimic-fn: 4.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/optionator@0.9.3:
|
/optionator@0.9.3:
|
||||||
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
|
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@@ -1765,11 +1750,6 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/path-key@4.0.0:
|
|
||||||
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/path-type@4.0.0:
|
/path-type@4.0.0:
|
||||||
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -1783,12 +1763,6 @@ packages:
|
|||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/pidtree@0.6.0:
|
|
||||||
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
|
|
||||||
engines: {node: '>=0.10'}
|
|
||||||
hasBin: true
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/postcss-value-parser@4.2.0:
|
/postcss-value-parser@4.2.0:
|
||||||
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -1895,23 +1869,11 @@ packages:
|
|||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/restore-cursor@4.0.0:
|
|
||||||
resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
|
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
|
||||||
dependencies:
|
|
||||||
onetime: 5.1.2
|
|
||||||
signal-exit: 3.0.7
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/reusify@1.0.4:
|
/reusify@1.0.4:
|
||||||
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
||||||
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/rfdc@1.3.0:
|
|
||||||
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/rimraf@3.0.2:
|
/rimraf@3.0.2:
|
||||||
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
|
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -1968,46 +1930,15 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/signal-exit@3.0.7:
|
|
||||||
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/signal-exit@4.1.0:
|
|
||||||
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
|
||||||
engines: {node: '>=14'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/slash@3.0.0:
|
/slash@3.0.0:
|
||||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/slice-ansi@5.0.0:
|
|
||||||
resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
ansi-styles: 6.2.1
|
|
||||||
is-fullwidth-code-point: 4.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/source-map-js@1.0.2:
|
/source-map-js@1.0.2:
|
||||||
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
|
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
/string-argv@0.3.2:
|
|
||||||
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
|
|
||||||
engines: {node: '>=0.6.19'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/string-width@5.1.2:
|
|
||||||
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
eastasianwidth: 0.2.0
|
|
||||||
emoji-regex: 9.2.2
|
|
||||||
strip-ansi: 7.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/strip-ansi@6.0.1:
|
/strip-ansi@6.0.1:
|
||||||
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -2015,18 +1946,6 @@ packages:
|
|||||||
ansi-regex: 5.0.1
|
ansi-regex: 5.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/strip-ansi@7.1.0:
|
|
||||||
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
ansi-regex: 6.0.1
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/strip-final-newline@3.0.0:
|
|
||||||
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/strip-json-comments@3.1.1:
|
/strip-json-comments@3.1.1:
|
||||||
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
|
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -2086,6 +2005,10 @@ packages:
|
|||||||
is-number: 7.0.0
|
is-number: 7.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/tr46@0.0.3:
|
||||||
|
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ts-api-utils@1.0.3(typescript@5.2.2):
|
/ts-api-utils@1.0.3(typescript@5.2.2):
|
||||||
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
|
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
|
||||||
engines: {node: '>=16.13.0'}
|
engines: {node: '>=16.13.0'}
|
||||||
@@ -2124,10 +2047,19 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/type-fest@1.4.0:
|
/type@1.2.0:
|
||||||
resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
|
resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==}
|
||||||
engines: {node: '>=10'}
|
dev: false
|
||||||
dev: true
|
|
||||||
|
/type@2.7.2:
|
||||||
|
resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/typedarray-to-buffer@3.1.5:
|
||||||
|
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
|
||||||
|
dependencies:
|
||||||
|
is-typedarray: 1.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/typescript@5.2.2:
|
/typescript@5.2.2:
|
||||||
resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
|
resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
|
||||||
@@ -2135,6 +2067,10 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/undici-types@5.26.5:
|
||||||
|
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/update-browserslist-db@1.0.13(browserslist@4.22.1):
|
/update-browserslist-db@1.0.13(browserslist@4.22.1):
|
||||||
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
|
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -2152,6 +2088,14 @@ packages:
|
|||||||
punycode: 2.3.0
|
punycode: 2.3.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/utf-8-validate@5.0.10:
|
||||||
|
resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
|
||||||
|
engines: {node: '>=6.14.2'}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
node-gyp-build: 4.6.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/vite-tsconfig-paths@4.2.1(typescript@5.2.2)(vite@4.4.11):
|
/vite-tsconfig-paths@4.2.1(typescript@5.2.2)(vite@4.4.11):
|
||||||
resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==}
|
resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -2204,6 +2148,31 @@ packages:
|
|||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/webidl-conversions@3.0.1:
|
||||||
|
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/websocket@1.0.34:
|
||||||
|
resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==}
|
||||||
|
engines: {node: '>=4.0.0'}
|
||||||
|
dependencies:
|
||||||
|
bufferutil: 4.0.8
|
||||||
|
debug: 2.6.9
|
||||||
|
es5-ext: 0.10.62
|
||||||
|
typedarray-to-buffer: 3.1.5
|
||||||
|
utf-8-validate: 5.0.10
|
||||||
|
yaeti: 0.0.6
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/whatwg-url@5.0.0:
|
||||||
|
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
|
||||||
|
dependencies:
|
||||||
|
tr46: 0.0.3
|
||||||
|
webidl-conversions: 3.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/which@2.0.2:
|
/which@2.0.2:
|
||||||
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -2212,19 +2181,15 @@ packages:
|
|||||||
isexe: 2.0.0
|
isexe: 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/wrap-ansi@8.1.0:
|
|
||||||
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
dependencies:
|
|
||||||
ansi-styles: 6.2.1
|
|
||||||
string-width: 5.1.2
|
|
||||||
strip-ansi: 7.1.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/wrappy@1.0.2:
|
/wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/yaeti@0.0.6:
|
||||||
|
resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==}
|
||||||
|
engines: {node: '>=0.10.32'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/yallist@3.1.1:
|
/yallist@3.1.1:
|
||||||
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -2233,11 +2198,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/yaml@2.3.2:
|
|
||||||
resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
|
|
||||||
engines: {node: '>= 14'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/yocto-queue@0.1.0:
|
/yocto-queue@0.1.0:
|
||||||
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
|
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
|
||||||
import isPropValid from '@emotion/is-prop-valid';
|
import isPropValid from '@emotion/is-prop-valid';
|
||||||
import { StyleSheetManager } from 'styled-components';
|
import { StyleSheetManager } from 'styled-components';
|
||||||
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import AppLayout from './components/AppLayout';
|
import AppLayout from './components/AppLayout';
|
||||||
@@ -13,9 +14,17 @@ import NotFound from './pages/NotFound';
|
|||||||
import * as PATH from './constants/path';
|
import * as PATH from './constants/path';
|
||||||
import Toast from './components/Toast';
|
import Toast from './components/Toast';
|
||||||
|
|
||||||
|
const queryClient = new QueryClient({
|
||||||
|
defaultOptions: {
|
||||||
|
queries: {
|
||||||
|
staleTime: 60 * 1000,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<>
|
<QueryClientProvider client={queryClient}>
|
||||||
<StyleSheetManager shouldForwardProp={shouldForwardProp}>
|
<StyleSheetManager shouldForwardProp={shouldForwardProp}>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Routes>
|
<Routes>
|
||||||
@@ -31,7 +40,7 @@ function App() {
|
|||||||
</StyleSheetManager>
|
</StyleSheetManager>
|
||||||
|
|
||||||
<Toast />
|
<Toast />
|
||||||
</>
|
</QueryClientProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,18 +8,10 @@ const USER_PAGE = {
|
|||||||
value: 'name',
|
value: 'name',
|
||||||
label: 'Sort by name',
|
label: 'Sort by name',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: 'identifiedCode',
|
|
||||||
label: 'Sort by identified code',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
value: 'phone',
|
value: 'phone',
|
||||||
label: 'Sort by phone',
|
label: 'Sort by phone',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: 'roomId',
|
|
||||||
label: 'Sort by room',
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ export const DASHBOARD = '/dashboard';
|
|||||||
export const USER = '/user';
|
export const USER = '/user';
|
||||||
export const ROOM = '/room';
|
export const ROOM = '/room';
|
||||||
export const OTHER_PATH = '*';
|
export const OTHER_PATH = '*';
|
||||||
export const BASE_URL = 'https://hotel-management-api.loiphan.com/';
|
export const BASE_URL = 'http://localhost:3000/';
|
||||||
export const USER_PATH = 'users';
|
export const USER_PATH = 'users';
|
||||||
export const ROOM_PATH = 'rooms';
|
export const ROOM_PATH = 'rooms';
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import { createClient } from '@supabase/supabase-js'
|
||||||
|
import { Database } from '@type/supabase';
|
||||||
|
const supabaseUrl = 'https://pjqujsjzzdrlrgqbxepe.supabase.co'
|
||||||
|
const supabaseKey = import.meta.env.VITE_SUPABASE_KEY
|
||||||
|
const supabase = createClient<Database>(supabaseUrl, supabaseKey!)
|
||||||
|
|
||||||
|
export default supabase;
|
||||||
@@ -1,47 +1,6 @@
|
|||||||
// Constants
|
// Constants
|
||||||
import { REQUIRED_FIELD_ERROR } from '../constants/formValidateMessage';
|
import { REQUIRED_FIELD_ERROR } from '../constants/formValidateMessage';
|
||||||
|
|
||||||
/**
|
|
||||||
* Create query url for search
|
|
||||||
* @param columnSearch Column want to search
|
|
||||||
* @param keySearch Keyword search
|
|
||||||
* @param sort Sort by
|
|
||||||
* @param order Order by
|
|
||||||
* @returns Return query url
|
|
||||||
*/
|
|
||||||
const searchQuery = (
|
|
||||||
columnSearch: string,
|
|
||||||
keySearch: string,
|
|
||||||
sort: string,
|
|
||||||
order: string
|
|
||||||
) => {
|
|
||||||
const phoneParams = keySearch
|
|
||||||
? `${columnSearch}_like=` + keySearch
|
|
||||||
: '';
|
|
||||||
const sortParams = sort
|
|
||||||
? '_sort=' + sort
|
|
||||||
: '';
|
|
||||||
const orderParams = order
|
|
||||||
? '_order=' + order
|
|
||||||
: '';
|
|
||||||
const finalParam = [phoneParams, sortParams, orderParams];
|
|
||||||
let query = '';
|
|
||||||
let isFirstParam = true;
|
|
||||||
|
|
||||||
finalParam.forEach((param) => {
|
|
||||||
if (param) {
|
|
||||||
if (isFirstParam) {
|
|
||||||
query = query.concat('', param);
|
|
||||||
isFirstParam = false;
|
|
||||||
} else {
|
|
||||||
query = query.concat('&', param);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return query;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert value to currency format with value
|
* Convert value to currency format with value
|
||||||
* @param value Value need to be converted
|
* @param value Value need to be converted
|
||||||
@@ -64,4 +23,4 @@ const errorMsg = (errorCode: number, msg: string) => {
|
|||||||
return `Error code: ${errorCode}. Message: ${msg}`;
|
return `Error code: ${errorCode}. Message: ${msg}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
export { errorMsg, searchQuery, formatCurrency, REQUIRED_FIELD_ERROR };
|
export { errorMsg, formatCurrency, REQUIRED_FIELD_ERROR };
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
import { useEffect, useState } from 'react';
|
|
||||||
|
|
||||||
// Constants
|
|
||||||
import { BASE_URL } from '@constant/path';
|
|
||||||
import { DEFAULT_ORDER_BY, DEFAULT_SORT_BY } from '@constant/config';
|
|
||||||
|
|
||||||
// Helpers
|
|
||||||
import { searchQuery } from '@helper/helper';
|
|
||||||
|
|
||||||
// Types
|
|
||||||
import { Nullable } from '@type/common';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The function use to fetch data on server API.
|
|
||||||
* @param path The path of url
|
|
||||||
* @param columnSearch Column need to search
|
|
||||||
* @param keyWord The key word to search
|
|
||||||
* @param tempSortBy Sort by
|
|
||||||
* @param tempOrderBy Order by
|
|
||||||
* @param reload Fetch again
|
|
||||||
* @returns data: A data after fetch, isPending: A boolean indicating whether or not the progress of fetch data is done, errorMsg: A error message from the server.
|
|
||||||
*/
|
|
||||||
const useFetch = (
|
|
||||||
path: string,
|
|
||||||
columnSearch: string = '',
|
|
||||||
keyWord: string = '',
|
|
||||||
tempSortBy?: string,
|
|
||||||
tempOrderBy?: string,
|
|
||||||
reload?: boolean
|
|
||||||
) => {
|
|
||||||
const [data, setData] = useState(null);
|
|
||||||
const [isPending, setIsPending] = useState(false);
|
|
||||||
const [errorFetchMsg, setErrorFetchMsg] = useState<Nullable<string>>(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
// Clear data
|
|
||||||
setData(null);
|
|
||||||
|
|
||||||
const fetchData = async () => {
|
|
||||||
setIsPending(true);
|
|
||||||
|
|
||||||
// Set default value
|
|
||||||
const sortBy = tempSortBy
|
|
||||||
? tempSortBy
|
|
||||||
: DEFAULT_SORT_BY;
|
|
||||||
const orderBy = tempOrderBy
|
|
||||||
? tempOrderBy
|
|
||||||
: DEFAULT_ORDER_BY;
|
|
||||||
|
|
||||||
// Query search
|
|
||||||
const query = searchQuery(columnSearch, keyWord, sortBy, orderBy);
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await fetch(BASE_URL + path + '?' + query);
|
|
||||||
const json = await response.json();
|
|
||||||
|
|
||||||
if (!response.ok) {
|
|
||||||
throw new Error(
|
|
||||||
`Error code: ${response.status} \n Messages: ${response.text}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
setIsPending(false);
|
|
||||||
setData(json);
|
|
||||||
setErrorFetchMsg(null);
|
|
||||||
} catch (error) {
|
|
||||||
setErrorFetchMsg(`Could not fetch data.\n ${error}`);
|
|
||||||
setIsPending(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
fetchData();
|
|
||||||
}, [path, reload, columnSearch, keyWord, tempOrderBy, tempSortBy]);
|
|
||||||
return { data, isPending, errorFetchMsg };
|
|
||||||
};
|
|
||||||
|
|
||||||
export { useFetch };
|
|
||||||
@@ -14,7 +14,6 @@ import RoomRow from './RoomRow';
|
|||||||
import { IRoom } from '@type/rooms';
|
import { IRoom } from '@type/rooms';
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
import { useFetch } from '@hook/useFetch';
|
|
||||||
import { ORDERBY_OPTIONS, ROOM_PAGE } from '@constant/commons';
|
import { ORDERBY_OPTIONS, ROOM_PAGE } from '@constant/commons';
|
||||||
|
|
||||||
// Styled
|
// Styled
|
||||||
@@ -39,28 +38,7 @@ const RoomTable = ({ reload, setReload }: IRoomTable) => {
|
|||||||
const orderByValue = searchParams.get('orderBy')
|
const orderByValue = searchParams.get('orderBy')
|
||||||
? searchParams.get('orderBy')!
|
? searchParams.get('orderBy')!
|
||||||
: '';
|
: '';
|
||||||
|
|
||||||
const { data, isPending, errorFetchMsg } = useFetch(
|
|
||||||
'rooms',
|
|
||||||
'name',
|
|
||||||
nameSearch,
|
|
||||||
sortByValue,
|
|
||||||
orderByValue,
|
|
||||||
reload
|
|
||||||
);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (data) {
|
|
||||||
setRooms(data);
|
|
||||||
} else {
|
|
||||||
setRooms([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (errorFetchMsg) {
|
|
||||||
console.error(errorFetchMsg);
|
|
||||||
}
|
|
||||||
}, [data, errorFetchMsg]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Direction>
|
<Direction>
|
||||||
|
|||||||
@@ -1,21 +1,12 @@
|
|||||||
import toast from 'react-hot-toast';
|
|
||||||
import { Dispatch, SetStateAction } from 'react';
|
import { Dispatch, SetStateAction } from 'react';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { RiEditBoxFill } from 'react-icons/ri';
|
import { RiEditBoxFill } from 'react-icons/ri';
|
||||||
import { IoExit } from 'react-icons/io5';
|
|
||||||
import Modal from '@component/Modal';
|
import Modal from '@component/Modal';
|
||||||
import Table from '@component/Table';
|
import Table from '@component/Table';
|
||||||
import Menus from '@component/Menus';
|
import Menus from '@component/Menus';
|
||||||
import UserForm from './UserForm';
|
import UserForm from './UserForm';
|
||||||
|
|
||||||
// Constants
|
|
||||||
import { STATUS_CODE } from '@constant/responseStatus';
|
|
||||||
import { CONFIRM_MESSAGE, DENIED_ACTION } from '@constant/messages';
|
|
||||||
|
|
||||||
// Services
|
|
||||||
import { updateRoomStatus } from '@service/roomServices';
|
|
||||||
import { checkOutUser } from '@service/userServices';
|
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
import { IUser } from '@type/users';
|
import { IUser } from '@type/users';
|
||||||
@@ -27,42 +18,13 @@ interface IUserRow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const UserRow = ({ user, reload, setReload }: IUserRow) => {
|
const UserRow = ({ user, reload, setReload }: IUserRow) => {
|
||||||
const handleCheckOut = async (user: IUser) => {
|
const { id, name, phone } = user;
|
||||||
if (user.roomId !== 0) {
|
|
||||||
if (confirm(CONFIRM_MESSAGE)) {
|
|
||||||
const resUpdateStatus = await updateRoomStatus(user.roomId, false);
|
|
||||||
const resCheckoutUser = await checkOutUser(user);
|
|
||||||
|
|
||||||
if (
|
|
||||||
resCheckoutUser?.statusCode === STATUS_CODE.OK &&
|
|
||||||
resUpdateStatus?.statusCode === STATUS_CODE.OK
|
|
||||||
) {
|
|
||||||
toast.success('Check out complete!');
|
|
||||||
|
|
||||||
// Reload table
|
|
||||||
setReload(!reload);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
toast.error(DENIED_ACTION);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const { id, name, identifiedCode, phone, roomId } = user;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table.Row>
|
<Table.Row>
|
||||||
<div>{id}</div>
|
<div>{id}</div>
|
||||||
<div>{name}</div>
|
<div>{name}</div>
|
||||||
<div>{identifiedCode}</div>
|
|
||||||
<div>{phone}</div>
|
<div>{phone}</div>
|
||||||
<div>
|
|
||||||
{
|
|
||||||
roomId
|
|
||||||
? roomId
|
|
||||||
: 'None'
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<Modal>
|
<Modal>
|
||||||
<Menus.Menu>
|
<Menus.Menu>
|
||||||
@@ -77,12 +39,6 @@ const UserRow = ({ user, reload, setReload }: IUserRow) => {
|
|||||||
</Menus.Button>
|
</Menus.Button>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
<Menus.Button
|
|
||||||
icon={<IoExit />}
|
|
||||||
onClick={() => handleCheckOut(user)}
|
|
||||||
>
|
|
||||||
Check out
|
|
||||||
</Menus.Button>
|
|
||||||
</Menus.List>
|
</Menus.List>
|
||||||
|
|
||||||
<Modal.Window name="edit" title="Edit user">
|
<Modal.Window name="edit" title="Edit user">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useSearchParams } from 'react-router-dom';
|
import { useSearchParams } from 'react-router-dom';
|
||||||
import { Dispatch, SetStateAction, useEffect, useState } from 'react';
|
import { Dispatch, SetStateAction, useCallback, useState } from 'react';
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import Menus from '@component/Menus';
|
import Menus from '@component/Menus';
|
||||||
@@ -13,9 +13,6 @@ import UserRow from './UserRow';
|
|||||||
// Types
|
// Types
|
||||||
import { IUser } from '@type/users';
|
import { IUser } from '@type/users';
|
||||||
|
|
||||||
// Hooks
|
|
||||||
import { useFetch } from '@hook/useFetch';
|
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
import { ORDERBY_OPTIONS, USER_PAGE } from '@constant/commons';
|
import { ORDERBY_OPTIONS, USER_PAGE } from '@constant/commons';
|
||||||
|
|
||||||
@@ -24,44 +21,52 @@ import Direction from '@commonStyle/Direction';
|
|||||||
import { StyledOperationTable } from './styled';
|
import { StyledOperationTable } from './styled';
|
||||||
import Spinner from '@commonStyle/Spinner';
|
import Spinner from '@commonStyle/Spinner';
|
||||||
|
|
||||||
|
import { useQuery } from '@tanstack/react-query';
|
||||||
|
import { getAllUsers } from '@service/userServices';
|
||||||
|
import toast from 'react-hot-toast';
|
||||||
|
|
||||||
interface IUserTable {
|
interface IUserTable {
|
||||||
reload: boolean;
|
reload: boolean;
|
||||||
setReload: Dispatch<SetStateAction<boolean>>;
|
setReload: Dispatch<SetStateAction<boolean>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const UserTable = ({ reload, setReload }: IUserTable) => {
|
const UserTable = ({ reload, setReload }: IUserTable) => {
|
||||||
const columnName = ['Id', 'Name', 'Identified Code', 'Phone', 'Room Id'];
|
const columnName = ['Id', 'Name', 'Phone'];
|
||||||
const [users, setUsers] = useState<IUser[]>([]);
|
|
||||||
const [phoneSearch, setPhoneSearch] = useState('');
|
const [phoneSearch, setPhoneSearch] = useState('');
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
const sortByValue = searchParams.get('sortBy')
|
const sortByValue = searchParams.get('sortBy')
|
||||||
? searchParams.get('sortBy')!
|
? searchParams.get('sortBy')!
|
||||||
: '';
|
: 'id';
|
||||||
const orderByValue = searchParams.get('orderBy')
|
const orderByValue = searchParams.get('orderBy')
|
||||||
? searchParams.get('orderBy')!
|
? searchParams.get('orderBy')!
|
||||||
: '';
|
: 'asc';
|
||||||
|
|
||||||
const { data, isPending, errorFetchMsg } = useFetch(
|
const {
|
||||||
'users',
|
isLoading,
|
||||||
'phone',
|
data: users,
|
||||||
phoneSearch,
|
error,
|
||||||
sortByValue,
|
} = useQuery({
|
||||||
orderByValue,
|
queryKey: ['cabins', sortByValue, orderByValue, phoneSearch],
|
||||||
reload
|
queryFn: () => getAllUsers(sortByValue, orderByValue, phoneSearch),
|
||||||
|
});
|
||||||
|
|
||||||
|
if(error) {
|
||||||
|
toast.error(error.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
const renderUserRow = useCallback(
|
||||||
|
(user: IUser) => (
|
||||||
|
<UserRow
|
||||||
|
user={user}
|
||||||
|
key={user.id}
|
||||||
|
reload={reload}
|
||||||
|
setReload={setReload}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
[reload, setReload]
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (data) {
|
|
||||||
setUsers(data);
|
|
||||||
} else {
|
|
||||||
setUsers([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (errorFetchMsg) {
|
|
||||||
console.error(errorFetchMsg);
|
|
||||||
}
|
|
||||||
}, [data, errorFetchMsg, setUsers]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Direction>
|
<Direction>
|
||||||
@@ -75,27 +80,17 @@ const UserTable = ({ reload, setReload }: IUserTable) => {
|
|||||||
/>
|
/>
|
||||||
</StyledOperationTable>
|
</StyledOperationTable>
|
||||||
|
|
||||||
{isPending && <Spinner />}
|
{isLoading && <Spinner />}
|
||||||
|
|
||||||
{users.length ? (
|
{users && users.length ? (
|
||||||
<Menus>
|
<Menus>
|
||||||
<Table columns="10% 30% 20% 20% 10% 5%">
|
<Table columns="10% 40% 35% 15%">
|
||||||
<Table.Header headerColumn={columnName} />
|
<Table.Header headerColumn={columnName} />
|
||||||
<Table.Body<IUser>
|
<Table.Body<IUser> data={users} render={renderUserRow} />
|
||||||
data={users}
|
|
||||||
render={(user: IUser) => (
|
|
||||||
<UserRow
|
|
||||||
user={user}
|
|
||||||
key={user.id}
|
|
||||||
reload={reload}
|
|
||||||
setReload={setReload}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</Table>
|
</Table>
|
||||||
</Menus>
|
</Menus>
|
||||||
) : (
|
) : (
|
||||||
!isPending && <Message>No data to show here!</Message>
|
!isLoading && <Message>No data to show here!</Message>
|
||||||
)}
|
)}
|
||||||
</Direction>
|
</Direction>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ import { IUser } from '@type/users';
|
|||||||
// Helpers
|
// Helpers
|
||||||
import { sendRequest } from '@helper/sendRequest';
|
import { sendRequest } from '@helper/sendRequest';
|
||||||
import { errorMsg } from '@helper/helper';
|
import { errorMsg } from '@helper/helper';
|
||||||
|
import supabase from '@constant/supabaseConfig';
|
||||||
|
|
||||||
|
const USERS_TABLE = 'users';
|
||||||
|
const ERROR_FETCHING = "Users can't be loaded!";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create user to the server
|
* Create user to the server
|
||||||
@@ -19,26 +23,26 @@ import { errorMsg } from '@helper/helper';
|
|||||||
* @returns The IResponse object if success or null
|
* @returns The IResponse object if success or null
|
||||||
*/
|
*/
|
||||||
const createUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
const createUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
||||||
try {
|
// try {
|
||||||
const response = await sendRequest<IUser>(
|
// const response = await sendRequest<IUser>(
|
||||||
USER_PATH,
|
// USER_PATH,
|
||||||
'POST',
|
// 'POST',
|
||||||
JSON.stringify(user)
|
// JSON.stringify(user)
|
||||||
);
|
// );
|
||||||
|
|
||||||
if (response.statusCode !== STATUS_CODE.CREATE) {
|
// if (response.statusCode !== STATUS_CODE.CREATE) {
|
||||||
throw new Error(errorMsg(response.statusCode, response.msg));
|
// throw new Error(errorMsg(response.statusCode, response.msg));
|
||||||
}
|
// }
|
||||||
|
|
||||||
return response;
|
// return response;
|
||||||
} catch (error: unknown) {
|
// } catch (error: unknown) {
|
||||||
if (error instanceof Error) {
|
// if (error instanceof Error) {
|
||||||
toast.error(error.message);
|
// toast.error(error.message);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the user to the server
|
* Update the user to the server
|
||||||
@@ -46,23 +50,23 @@ const createUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
|||||||
* @returns The IResponse object if update success or null
|
* @returns The IResponse object if update success or null
|
||||||
*/
|
*/
|
||||||
const updateUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
const updateUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
||||||
try {
|
// try {
|
||||||
const response = await sendRequest<IUser>(
|
// const response = await sendRequest<IUser>(
|
||||||
USER_PATH + '/' + user.id,
|
// USER_PATH + '/' + user.id,
|
||||||
'PUT',
|
// 'PUT',
|
||||||
JSON.stringify(user)
|
// JSON.stringify(user)
|
||||||
);
|
// );
|
||||||
|
|
||||||
if (response.statusCode !== STATUS_CODE.OK) {
|
// if (response.statusCode !== STATUS_CODE.OK) {
|
||||||
throw new Error(errorMsg(response.statusCode, response.msg));
|
// throw new Error(errorMsg(response.statusCode, response.msg));
|
||||||
}
|
// }
|
||||||
|
|
||||||
return response;
|
// return response;
|
||||||
} catch (error: unknown) {
|
// } catch (error: unknown) {
|
||||||
if (error instanceof Error) {
|
// if (error instanceof Error) {
|
||||||
toast.error(error.message);
|
// toast.error(error.message);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
@@ -72,17 +76,37 @@ const updateUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
|||||||
* @param user The user need to be checkout
|
* @param user The user need to be checkout
|
||||||
* @returns The IResponse object if checkout success or not
|
* @returns The IResponse object if checkout success or not
|
||||||
*/
|
*/
|
||||||
const checkOutUser = async (user: IUser): Promise<Nullable<IResponse<IUser>>> => {
|
const checkOutUser = async (
|
||||||
const tempUser = user;
|
user: IUser
|
||||||
|
): Promise<Nullable<IResponse<IUser>>> => {
|
||||||
|
// const tempUser = user;
|
||||||
|
|
||||||
if (tempUser) {
|
// if (tempUser) {
|
||||||
tempUser.roomId = 0;
|
// tempUser.roomId = 0;
|
||||||
const resUpdateUser = await updateUser(tempUser);
|
// const resUpdateUser = await updateUser(tempUser);
|
||||||
|
|
||||||
return resUpdateUser;
|
// return resUpdateUser;
|
||||||
}
|
// }
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export { updateUser, checkOutUser, createUser };
|
const getAllUsers = async (
|
||||||
|
sortBy: string,
|
||||||
|
orderBy: string,
|
||||||
|
phoneSearch: string
|
||||||
|
): Promise<IUser[]> => {
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from(USERS_TABLE)
|
||||||
|
.select('*')
|
||||||
|
.order(sortBy, { ascending: orderBy === 'asc' })
|
||||||
|
.like('phone', `%${phoneSearch}%`);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw new Error(ERROR_FETCHING);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
export { updateUser, checkOutUser, createUser, getAllUsers };
|
||||||
|
|||||||
@@ -0,0 +1,110 @@
|
|||||||
|
export type Json =
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| null
|
||||||
|
| { [key: string]: Json | undefined }
|
||||||
|
| Json[]
|
||||||
|
|
||||||
|
export interface Database {
|
||||||
|
public: {
|
||||||
|
Tables: {
|
||||||
|
bookings: {
|
||||||
|
Row: {
|
||||||
|
amount: number
|
||||||
|
endDate: string
|
||||||
|
id: number
|
||||||
|
roomId: number
|
||||||
|
startDate: string
|
||||||
|
status: boolean
|
||||||
|
userId: number
|
||||||
|
}
|
||||||
|
Insert: {
|
||||||
|
amount: number
|
||||||
|
endDate: string
|
||||||
|
id?: number
|
||||||
|
roomId: number
|
||||||
|
startDate: string
|
||||||
|
status: boolean
|
||||||
|
userId: number
|
||||||
|
}
|
||||||
|
Update: {
|
||||||
|
amount?: number
|
||||||
|
endDate?: string
|
||||||
|
id?: number
|
||||||
|
roomId?: number
|
||||||
|
startDate?: string
|
||||||
|
status?: boolean
|
||||||
|
userId?: number
|
||||||
|
}
|
||||||
|
Relationships: [
|
||||||
|
{
|
||||||
|
foreignKeyName: "bookings_roomId_fkey"
|
||||||
|
columns: ["roomId"]
|
||||||
|
isOneToOne: false
|
||||||
|
referencedRelation: "rooms"
|
||||||
|
referencedColumns: ["id"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
foreignKeyName: "bookings_userId_fkey"
|
||||||
|
columns: ["userId"]
|
||||||
|
isOneToOne: false
|
||||||
|
referencedRelation: "users"
|
||||||
|
referencedColumns: ["id"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
rooms: {
|
||||||
|
Row: {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
price: number
|
||||||
|
status: boolean
|
||||||
|
}
|
||||||
|
Insert: {
|
||||||
|
id?: number
|
||||||
|
name: string
|
||||||
|
price: number
|
||||||
|
status: boolean
|
||||||
|
}
|
||||||
|
Update: {
|
||||||
|
id?: number
|
||||||
|
name?: string
|
||||||
|
price?: number
|
||||||
|
status?: boolean
|
||||||
|
}
|
||||||
|
Relationships: []
|
||||||
|
}
|
||||||
|
users: {
|
||||||
|
Row: {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
phone: string
|
||||||
|
}
|
||||||
|
Insert: {
|
||||||
|
id?: number
|
||||||
|
name: string
|
||||||
|
phone: string
|
||||||
|
}
|
||||||
|
Update: {
|
||||||
|
id?: number
|
||||||
|
name?: string
|
||||||
|
phone?: string
|
||||||
|
}
|
||||||
|
Relationships: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Views: {
|
||||||
|
[_ in never]: never
|
||||||
|
}
|
||||||
|
Functions: {
|
||||||
|
[_ in never]: never
|
||||||
|
}
|
||||||
|
Enums: {
|
||||||
|
[_ in never]: never
|
||||||
|
}
|
||||||
|
CompositeTypes: {
|
||||||
|
[_ in never]: never
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
interface IUser {
|
interface IUser {
|
||||||
id: number;
|
id: number;
|
||||||
name: string;
|
name: string;
|
||||||
identifiedCode: string;
|
|
||||||
phone: string;
|
phone: string;
|
||||||
roomId: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export type { IUser };
|
export type { IUser };
|
||||||
|
|||||||
Reference in New Issue
Block a user