mirror of
https://github.com/enso-org/enso.git
synced 2024-11-30 17:44:58 +03:00
37cc980082
#### Tl;dr Closes: enso-org/cloud-v2#1283 This PR significantly reimplements Offline mode <details><summary>Demo Presentation</summary> <p> https://github.com/enso-org/enso/assets/61194245/752d0423-9c0a-43ba-91e3-4a6688f77034 </p> </details> --- #### Context: Offline mode is one of the core features of the dashboard. Unfortunately, after adding new features and a few refactoring, we lost the ability to work offline. This PR should bring this functionality back, with a few key differences: 1. We require users to sign in before using the dashboard even in local mode. 2. Once a user is logged in, we allow him to work with local files 3. If a user closes the dashboard, and then open it, he can continue using it in offline mode #### This Change: What does this change do in the larger context? Specific details to highlight for review: 1. Reimplements `<AuthProvider />` functionality, now it implemented on top of `<Suspense />` and ReactQuery 2. Reimplements Backend module flow, now remote backend is always created, You no longer need to check if the RemoteBackend is present 3. Introduces new `<Suspense />` component, which is aware of offline status 4. Introduce new offline-related hooks 5. Add a banner to the form if it's unable to submit it offline 6. Refactor `InviteUserDialog` to the new `<Form />` component 7. Fixes redirect bug when the app doesn't redirect a user to the dashboard after logging in 8. Fixes strange behavior when `/users/me` could stuck into infinite refetch 9. Redesign the Cloud table for offline mode. 10. Adds blocking UI dialog when a user clicks "log out" button #### Test Plan: This PR requires thorough QA on the login flow across the browser and IDE. All redirect logic must stay unchanged. ---
111 lines
3.5 KiB
JSON
111 lines
3.5 KiB
JSON
{
|
|
"name": "enso-dashboard",
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"main": "./src/index.tsx",
|
|
"private": true,
|
|
"imports": {
|
|
"#/*": "./src/*"
|
|
},
|
|
"exports": {
|
|
".": "./src/index.tsx",
|
|
"./tailwind.config": "./tailwind.config.js",
|
|
"./src/platform": "./src/platform.ts",
|
|
"./src/tailwind.css": "./src/tailwind.css"
|
|
},
|
|
"scripts": {
|
|
"compile": "tsc",
|
|
"typecheck": "tsc --noEmit",
|
|
"build": "vite build",
|
|
"dev": "vite",
|
|
"dev:e2e": "vite -c vite.test.config.ts",
|
|
"dev:e2e:ci": "vite -c vite.test.config.ts build && vite preview --port 8080 --strictPort",
|
|
"test": "npm run test:unit && npm run test:e2e",
|
|
"test:unit": "vitest run",
|
|
"test:unit:debug": "vitest",
|
|
"test:e2e": "cross-env NODE_ENV=production playwright test",
|
|
"test:e2e:debug": "cross-env NODE_ENV=production playwright test --ui"
|
|
},
|
|
"//": [
|
|
"@fortawesome/fontawesome-svg-core is required as a peer dependency for @fortawesome/react-fontawesome"
|
|
],
|
|
"dependencies": {
|
|
"@aws-amplify/auth": "5.6.5",
|
|
"@aws-amplify/core": "5.8.5",
|
|
"@hookform/resolvers": "^3.4.0",
|
|
"@monaco-editor/react": "4.6.0",
|
|
"@sentry/react": "^7.74.0",
|
|
"@tanstack/react-query": "5.45.1",
|
|
"@tanstack/query-persist-client-core": "5.45.0",
|
|
"ajv": "^8.12.0",
|
|
"enso-common": "^1.0.0",
|
|
"idb-keyval": "6.2.1",
|
|
"is-network-error": "^1.0.1",
|
|
"monaco-editor": "0.48.0",
|
|
"react": "^18.3.1",
|
|
"react-aria": "^3.33.0",
|
|
"react-aria-components": "^1.2.0",
|
|
"react-dom": "^18.3.1",
|
|
"react-error-boundary": "4.0.13",
|
|
"react-hook-form": "^7.51.4",
|
|
"react-router-dom": "^6.23.1",
|
|
"react-stately": "^3.31.0",
|
|
"react-toastify": "^9.1.3",
|
|
"tailwind-merge": "^2.3.0",
|
|
"tailwind-variants": "0.2.1",
|
|
"tiny-invariant": "^1.3.3",
|
|
"ts-results": "^3.3.0",
|
|
"validator": "^13.12.0",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/plugin-syntax-import-assertions": "^7.23.3",
|
|
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
|
|
"@fast-check/vitest": "^0.0.8",
|
|
"@ianvs/prettier-plugin-sort-imports": "^4.1.1",
|
|
"@modyfi/vite-plugin-yaml": "^1.0.4",
|
|
"@playwright/experimental-ct-react": "^1.40.0",
|
|
"@playwright/test": "^1.40.0",
|
|
"@react-types/shared": "^3.22.1",
|
|
"@tanstack/react-query-devtools": "5.45.1",
|
|
"@types/node": "^20.11.21",
|
|
"@types/react": "^18.0.27",
|
|
"@types/react-dom": "^18.0.10",
|
|
"@types/validator": "^13.11.7",
|
|
"@typescript-eslint/eslint-plugin": "^6.7.2",
|
|
"@typescript-eslint/parser": "^6.7.2",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"chalk": "^5.3.0",
|
|
"cross-env": "^7.0.3",
|
|
"enso-chat": "git://github.com/enso-org/enso-bot",
|
|
"esbuild": "^0.19.3",
|
|
"esbuild-plugin-inline-image": "^0.0.9",
|
|
"esbuild-plugin-time": "^1.0.0",
|
|
"esbuild-plugin-yaml": "^0.0.1",
|
|
"eslint": "^8.49.0",
|
|
"eslint-plugin-jsdoc": "^46.8.1",
|
|
"eslint-plugin-react": "^7.32.1",
|
|
"fast-check": "^3.15.0",
|
|
"playwright": "^1.38.0",
|
|
"postcss": "^8.4.29",
|
|
"prettier-plugin-tailwindcss": "^0.5.11",
|
|
"react-toastify": "^9.1.3",
|
|
"tailwindcss": "^3.4.1",
|
|
"tailwindcss-animate": "1.0.7",
|
|
"tailwindcss-react-aria-components": "^1.1.1",
|
|
"ts-plugin-namespace-auto-import": "^1.0.0",
|
|
"typescript": "~5.2.2",
|
|
"vite": "^4.4.9",
|
|
"vitest": "^1.3.1"
|
|
},
|
|
"optionalDependencies": {
|
|
"@esbuild/darwin-x64": "^0.17.15",
|
|
"@esbuild/linux-x64": "^0.17.15",
|
|
"@esbuild/windows-x64": "^0.17.15"
|
|
},
|
|
"overrides": {
|
|
"@aws-amplify/auth": "../_IGNORED_",
|
|
"react-native-url-polyfill": "../_IGNORED_"
|
|
}
|
|
}
|