From c63ce29a339a2ba0a5ff1527aa40c38be820595b Mon Sep 17 00:00:00 2001 From: Laurent GAY Date: Sat, 22 Nov 2025 12:24:07 +0100 Subject: [PATCH] remove absinthe package in frontend - #1814 --- env.d.ts | 1 - lib/graphql/resolvers/invitation.ex | 8 +- package-lock.json | 286 ++-------------------- package.json | 8 +- src/apollo/absinthe-socket-link.ts | 25 -- src/apollo/absinthe-upload-socket-link.ts | 20 -- src/apollo/link.ts | 43 +--- src/typings/absinthe.d.ts | 5 - src/vue-apollo.ts | 4 +- 9 files changed, 41 insertions(+), 359 deletions(-) delete mode 100644 src/apollo/absinthe-socket-link.ts delete mode 100644 src/apollo/absinthe-upload-socket-link.ts delete mode 100644 src/typings/absinthe.d.ts diff --git a/env.d.ts b/env.d.ts index 5cdc6906b..d8fcf94ca 100644 --- a/env.d.ts +++ b/env.d.ts @@ -2,7 +2,6 @@ interface ImportMetaEnv { readonly VITE_SERVER_URL: string; - readonly VITE_HISTOIRE_ENV: string; } interface ImportMeta { diff --git a/lib/graphql/resolvers/invitation.ex b/lib/graphql/resolvers/invitation.ex index 28c4ce67a..a5d09cb08 100644 --- a/lib/graphql/resolvers/invitation.ex +++ b/lib/graphql/resolvers/invitation.ex @@ -65,10 +65,10 @@ defmodule Mobilizon.GraphQL.Resolvers.Invitation do ) do with true <- String.to_integer(actor_id_chosen) == actor_id_connected || - {:error, "You can only accept invitations for your own account"}, + {:error, dgettext("errors", "You can only accept invitations for your own account")}, %Invitation{} = _invitation <- Invitations.find_invitation(group_id, token) || - {:error, "Invalid invitation token for this group"}, + {:error, dgettext("errors", "Invalid invitation token for this group")}, false <- Mobilizon.Actors.member?(actor_id_connected, group_id), {:ok, member} <- @@ -80,8 +80,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Invitation do {:ok, member} else {:error, _} = error -> error - true -> {:error, "You are already a member of this group"} - _ -> {:error, "Unexpected error"} + true -> {:error, dgettext("errors", "You are already a member of this group")} + _ -> {:error, dgettext("errors", "Unexpected error")} end end end diff --git a/package-lock.json b/package-lock.json index aa65ff8a4..b7deefb1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,6 @@ "hasInstallScript": true, "dependencies": { "@apollo/client": "^3.13.8", - "@framasoft/socket": "^1.0.0", - "@framasoft/socket-apollo-link": "^1.0.0", "@fullcalendar/core": "^6.1.10", "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/interaction": "^6.1.10", @@ -48,10 +46,9 @@ "@vue-a11y/announcer": "^2.1.0", "@vue-a11y/skip-to": "^2.1.2", "@vue-leaflet/vue-leaflet": "^0.10.1", - "@vue/apollo-composable": "^4.0.0-beta.9", + "@vue/apollo-composable": "^4.2.2", "@vue/compiler-sfc": "^3.2.37", "@vueuse/core": "^10.0.2", - "apollo-absinthe-upload-link": "^1.5.0", "autoprefixer": "^10", "blurhash": "^2.0.0", "date-fns": "^4.1.0", @@ -72,6 +69,7 @@ "patch-package": "^8.0.0", "phoenix": "^1.6", "postcss": "^8", + "react": "^19.2.0", "register-service-worker": "^1.7.2", "sanitize-html": "^2.5.3", "tailwindcss": "^3", @@ -117,7 +115,7 @@ "husky": "^9.0.10", "jsdom": "^27.0.1", "lint-staged": "^16.2.6", - "mock-apollo-client": "^1.1.0", + "mock-apollo-client": "^1.4.0", "prettier": "^3.0.0", "prettier-eslint": "^16.1.2", "rollup-plugin-visualizer": "^6.0.5", @@ -1774,6 +1772,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2630,38 +2629,6 @@ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "license": "MIT" }, - "node_modules/@framasoft/socket": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@framasoft/socket/-/socket-1.0.3.tgz", - "integrity": "sha512-84vWRlHqEBSAawJWh5du/GxIQX3fuqedh9fAETqm8o1SJ8/2APzDBibpjHBA4q2hrqhwOBHdBxKykU/bEJ++EQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.2", - "@jumpn/utils-array": "0.3.4", - "@jumpn/utils-composite": "0.7.0", - "@jumpn/utils-graphql": "0.6.0", - "core-js": "^3.33.2", - "zen-observable": "^0.10.0" - }, - "peerDependencies": { - "phoenix": "^1.7.10" - } - }, - "node_modules/@framasoft/socket-apollo-link": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@framasoft/socket-apollo-link/-/socket-apollo-link-1.0.1.tgz", - "integrity": "sha512-j2RHnVcPQx1iTWqBnRcjFPwY4lfED/X+/irKmsQahJUg3aMZUhiyX1+CwN14jTYc++oF8UVXbsn8knETCKkm8w==", - "license": "MIT", - "dependencies": { - "@apollo/client": "^3.8.7", - "@babel/runtime": "^7.23.2", - "@framasoft/socket": ">=1.0.0", - "core-js": "^3.33.2", - "flow-static-land": "^0.2.8", - "graphql": "^16.8.1", - "zen-observable": "^0.10.0" - } - }, "node_modules/@fullcalendar/core": { "version": "6.1.19", "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.19.tgz", @@ -2963,82 +2930,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jumpn/utils-array": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jumpn/utils-array/-/utils-array-0.3.4.tgz", - "integrity": "sha512-ExRwf0b0NMyMn6HLStMeqEEtmblV0BKVZ4YT3FhEJ5ErZSPN4Vv6xYUJQGNG0b7QGZJIN2KetxEoOm4MYmXygw==", - "license": "MIT", - "dependencies": { - "babel-polyfill": "6.26.0", - "babel-runtime": "6.26.0", - "flow-static-land": "0.2.7" - } - }, - "node_modules/@jumpn/utils-array/node_modules/flow-static-land": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/flow-static-land/-/flow-static-land-0.2.7.tgz", - "integrity": "sha512-SmGgln4qcqLAysXM5BF8EQS+clj0TUf9+KlZUJgwuzNHvwbput+opz3CMyee9sDuLf4J/3sJbYGjdNsd2jSurA==", - "license": "MIT" - }, - "node_modules/@jumpn/utils-composite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@jumpn/utils-composite/-/utils-composite-0.7.0.tgz", - "integrity": "sha512-kamRVYJLNvjMrnKKeu2RSFQHLUO/IYFo05gLI7GQcCk063mJzsjCCfRycCievIBI+5Sg8C7A5gwRYxkBA5jY8w==", - "license": "MIT", - "dependencies": { - "@jumpn/utils-array": "0.3.4", - "babel-polyfill": "6.26.0", - "babel-runtime": "6.26.0", - "fast-deep-equal": "1.0.0", - "flow-static-land": "0.2.8" - } - }, - "node_modules/@jumpn/utils-graphql": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jumpn/utils-graphql/-/utils-graphql-0.6.0.tgz", - "integrity": "sha512-I5OSEh8Ed4FdLIcUTYzWdpO9noQOoWptdgF8yOZ0xhDD7h7E9IgPYxfy36qbC6v9xlpGTwQMu3Wn8ulkinG/MQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "7.2.0", - "core-js": "2.6.0", - "graphql": "14.0.2" - } - }, - "node_modules/@jumpn/utils-graphql/node_modules/@babel/runtime": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", - "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.12.0" - } - }, - "node_modules/@jumpn/utils-graphql/node_modules/core-js": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz", - "integrity": "sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "license": "MIT" - }, - "node_modules/@jumpn/utils-graphql/node_modules/graphql": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.0.2.tgz", - "integrity": "sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw==", - "deprecated": "No longer supported; please update to a newer version. Details: https://github.com/graphql/graphql-js#version-support", - "license": "MIT", - "dependencies": { - "iterall": "^1.2.2" - }, - "engines": { - "node": ">= 6.x" - } - }, - "node_modules/@jumpn/utils-graphql/node_modules/regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", - "license": "MIT" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -5620,13 +5511,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, "node_modules/ansi-escapes": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", @@ -5690,29 +5574,6 @@ "node": ">= 8" } }, - "node_modules/apollo-absinthe-upload-link": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/apollo-absinthe-upload-link/-/apollo-absinthe-upload-link-1.7.0.tgz", - "integrity": "sha512-Dt5R6OkN2xigCaN1WHjpgyf5M5Tx5wFJMF4zA4J72Bjd990ImXhoCT/Gs2Cl8S0lXchpP2BndJSJN7MrSJz2CA==", - "license": "MIT", - "dependencies": { - "@apollo/client": "^3.0.0", - "graphql": "^15.0.0", - "rxjs": "~6.2.2" - }, - "peerDependencies": { - "rxjs": ">=6.0.0" - } - }, - "node_modules/apollo-absinthe-upload-link/node_modules/graphql": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.10.1.tgz", - "integrity": "sha512-BL/Xd/T9baO6NFzoMpiMD7YUZ62R6viR5tp/MULVEnbYJXZA//kRNW7J0j1w/wXArgL0sCxhDfK5dczSKn3+cg==", - "license": "MIT", - "engines": { - "node": ">= 10.x" - } - }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -6027,49 +5888,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - } - }, - "node_modules/babel-polyfill/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "license": "MIT", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "license": "MIT" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -6550,17 +6368,6 @@ "dev": true, "license": "MIT" }, - "node_modules/core-js": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", - "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.47.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", @@ -7663,13 +7470,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7784,9 +7584,10 @@ } }, "node_modules/fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha512-46+Jxk9Yj/nQY+3a1KTnpbBTemcAbPySTKya8iM9D7EsiONpSWbvzesalcCJ6tmJrCUITT2fmAQfNHFG+OHM6Q==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-diff": { @@ -7994,12 +7795,6 @@ "@floating-ui/core": "^1.1.0" } }, - "node_modules/flow-static-land": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/flow-static-land/-/flow-static-land-0.2.8.tgz", - "integrity": "sha512-pOZFExu2rbscCgcEo7nL7FNhBubMi18dn1Un4lm8LOmQkYhgsHLsrBGMWmuJXRWcYMrOC7I/bPsiqqVjdD3K1g==", - "license": "MIT" - }, "node_modules/flush-promises": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/flush-promises/-/flush-promises-1.0.2.tgz", @@ -9309,12 +9104,6 @@ "node": ">=8" } }, - "node_modules/iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", - "license": "MIT" - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -11391,13 +11180,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/prettier-eslint/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, "node_modules/prettier-eslint/node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -11845,6 +11627,15 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -11917,12 +11708,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==", - "license": "MIT" - }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -12293,24 +12078,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -14717,13 +14484,6 @@ "dev": true, "license": "MIT" }, - "node_modules/workbox-build/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, "node_modules/workbox-build/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -15317,9 +15077,9 @@ } }, "node_modules/zen-observable": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.10.0.tgz", - "integrity": "sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw==", + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", "license": "MIT" }, "node_modules/zen-observable-ts": { @@ -15331,12 +15091,6 @@ "zen-observable": "0.8.15" } }, - "node_modules/zen-observable-ts/node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "license": "MIT" - }, "node_modules/zhyswan-vuedraggable": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/zhyswan-vuedraggable/-/zhyswan-vuedraggable-4.1.3.tgz", diff --git a/package.json b/package.json index bf6bdfb5e..805dd3019 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,6 @@ "type": "module", "dependencies": { "@apollo/client": "^3.13.8", - "@framasoft/socket": "^1.0.0", - "@framasoft/socket-apollo-link": "^1.0.0", "@fullcalendar/core": "^6.1.10", "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/interaction": "^6.1.10", @@ -67,10 +65,9 @@ "@vue-a11y/announcer": "^2.1.0", "@vue-a11y/skip-to": "^2.1.2", "@vue-leaflet/vue-leaflet": "^0.10.1", - "@vue/apollo-composable": "^4.0.0-beta.9", + "@vue/apollo-composable": "^4.2.2", "@vue/compiler-sfc": "^3.2.37", "@vueuse/core": "^10.0.2", - "apollo-absinthe-upload-link": "^1.5.0", "autoprefixer": "^10", "blurhash": "^2.0.0", "date-fns": "^4.1.0", @@ -91,6 +88,7 @@ "patch-package": "^8.0.0", "phoenix": "^1.6", "postcss": "^8", + "react": "^19.2.0", "register-service-worker": "^1.7.2", "sanitize-html": "^2.5.3", "tailwindcss": "^3", @@ -136,7 +134,7 @@ "husky": "^9.0.10", "jsdom": "^27.0.1", "lint-staged": "^16.2.6", - "mock-apollo-client": "^1.1.0", + "mock-apollo-client": "^1.4.0", "prettier": "^3.0.0", "prettier-eslint": "^16.1.2", "rollup-plugin-visualizer": "^6.0.5", diff --git a/src/apollo/absinthe-socket-link.ts b/src/apollo/absinthe-socket-link.ts deleted file mode 100644 index 9927cabca..000000000 --- a/src/apollo/absinthe-socket-link.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Socket as PhoenixSocket } from "phoenix"; -import { create } from "@framasoft/socket"; -import { createAbsintheSocketLink } from "@framasoft/socket-apollo-link"; -import { AUTH_ACCESS_TOKEN } from "@/constants"; -import { GRAPHQL_API_ENDPOINT } from "@/api/_entrypoint"; - -const httpServer = GRAPHQL_API_ENDPOINT || "http://localhost:4000"; - -const webSocketPrefix = import.meta.env.PROD ? "wss" : "ws"; -const wsEndpoint = `${webSocketPrefix}${httpServer.substring( - httpServer.indexOf(":") -)}/graphql_socket`; - -const phoenixSocket = new PhoenixSocket(wsEndpoint, { - params: () => { - const token = localStorage.getItem(AUTH_ACCESS_TOKEN); - if (token) { - return { token }; - } - return {}; - }, -}); - -const absintheSocket = create(phoenixSocket); -export default createAbsintheSocketLink(absintheSocket); diff --git a/src/apollo/absinthe-upload-socket-link.ts b/src/apollo/absinthe-upload-socket-link.ts deleted file mode 100644 index 6f40d6d0e..000000000 --- a/src/apollo/absinthe-upload-socket-link.ts +++ /dev/null @@ -1,20 +0,0 @@ -import fetch from "unfetch"; -import { createLink } from "apollo-absinthe-upload-link"; -import { GRAPHQL_API_ENDPOINT, GRAPHQL_API_FULL_PATH } from "@/api/_entrypoint"; - -// Endpoints -const httpServer = GRAPHQL_API_ENDPOINT || "http://localhost:4000"; -const httpEndpoint = GRAPHQL_API_FULL_PATH || `${httpServer}/api`; - -const customFetch = async (uri: string, options: any) => { - const response = await fetch(uri, options); - if (response.status >= 400) { - return Promise.reject(response.status); - } - return response; -}; - -export const uploadLink = createLink({ - uri: httpEndpoint, - fetch: customFetch, -}); diff --git a/src/apollo/link.ts b/src/apollo/link.ts index da46d9028..c43091bbf 100644 --- a/src/apollo/link.ts +++ b/src/apollo/link.ts @@ -1,37 +1,18 @@ -import { from, split } from "@apollo/client/core"; +import { from } from "@apollo/client/core"; +import { createHttpLink } from "@apollo/client"; import { RetryLink } from "@apollo/client/link/retry"; -import { getMainDefinition } from "@apollo/client/utilities"; -import absintheSocketLink from "./absinthe-socket-link"; -import { authMiddleware } from "./auth"; -import errorLink from "./error-link"; -import { uploadLink } from "./absinthe-upload-socket-link"; import { removeTypenameFromVariables } from "@apollo/client/link/remove-typename"; +import { authMiddleware } from "@/apollo/auth"; +import errorLink from "@/apollo/error-link"; +import { GRAPHQL_API_ENDPOINT, GRAPHQL_API_FULL_PATH } from "@/api/_entrypoint"; -let link; +// Endpoints +const httpServer = GRAPHQL_API_ENDPOINT || "http://localhost:4000"; +const httpEndpoint = GRAPHQL_API_FULL_PATH || `${httpServer}/api`; -// The Absinthe socket Apollo link relies on an old library -// (@jumpn/utils-composite) which itself relies on an old -// Babel version, which is incompatible with Histoire. -// We just don't use the absinthe apollo socket link -// in this case. -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -if (!import.meta.env.VITE_HISTOIRE_ENV) { - // const absintheSocketLink = await import("./absinthe-socket-link"); - - link = split( - // split based on operation type - ({ query }) => { - const definition = getMainDefinition(query); - return ( - definition.kind === "OperationDefinition" && - definition.operation === "subscription" - ); - }, - absintheSocketLink, - uploadLink - ); -} +const uploadLink = createHttpLink({ + uri: httpEndpoint, +}); const retryLink = new RetryLink(); @@ -40,5 +21,5 @@ export const fullLink = from([ retryLink, errorLink, authMiddleware, - link ?? uploadLink, + uploadLink, ]); diff --git a/src/typings/absinthe.d.ts b/src/typings/absinthe.d.ts deleted file mode 100644 index 026f2428a..000000000 --- a/src/typings/absinthe.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare module "@framasoft/socket"; - -declare module "@framasoft/socket-apollo-link"; - -declare module "apollo-absinthe-upload-link"; diff --git a/src/vue-apollo.ts b/src/vue-apollo.ts index 91bba922b..78181c191 100644 --- a/src/vue-apollo.ts +++ b/src/vue-apollo.ts @@ -1,7 +1,7 @@ import { ApolloClient, NormalizedCacheObject } from "@apollo/client/core"; import buildCurrentUserResolver from "@/apollo/user"; -import { cache } from "./apollo/memory"; -import { fullLink } from "./apollo/link"; +import { cache } from "@/apollo/memory"; +import { fullLink } from "@/apollo/link"; export const apolloClient = new ApolloClient({ cache,