@nitra/vite-boot 4.0.1 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -1
- package/src/apollo.js +27 -27
- package/src/token.js +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitra/vite-boot",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.3",
|
|
4
4
|
"description": "Vite boot",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -35,5 +35,9 @@
|
|
|
35
35
|
"graphql-ws": "^6.0.6",
|
|
36
36
|
"pinia": "^3.0.3",
|
|
37
37
|
"pinia-plugin-persistedstate": "^4.5.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"react": "^19.1.1",
|
|
41
|
+
"react-dom": "^19.1.1"
|
|
38
42
|
}
|
|
39
43
|
}
|
package/src/apollo.js
CHANGED
|
@@ -58,37 +58,37 @@ const authLink = setContext((_, { headers }) => {
|
|
|
58
58
|
return prepareHeaders({ ...headers })
|
|
59
59
|
})
|
|
60
60
|
|
|
61
|
-
export const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
export const wsClient = createClient({
|
|
62
|
+
url: `${import.meta.env.VITE_HASURA_PROTOCOL}://${import.meta.env.VITE_HASURA_HOST}/v1/graphql`,
|
|
63
|
+
connectionParams: () => {
|
|
64
|
+
return prepareHeaders()
|
|
65
|
+
},
|
|
66
|
+
// Обробник успішного підключення
|
|
67
|
+
on: {
|
|
68
|
+
// Обробник помилок підключення
|
|
69
|
+
error: error => {
|
|
70
|
+
log.error('WebSocket помилка:', error)
|
|
66
71
|
},
|
|
67
|
-
// Обробник успішного підключення
|
|
68
|
-
on: {
|
|
69
|
-
// Обробник помилок підключення
|
|
70
|
-
error: error => {
|
|
71
|
-
log.error('WebSocket помилка:', error)
|
|
72
|
-
},
|
|
73
72
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
// Обробник закриття з'єднання
|
|
74
|
+
closed: event => {
|
|
75
|
+
log.info('WebSocket закрито:', event.code, event.reason)
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
77
|
+
// Коди помилок аутентифікації
|
|
78
|
+
if (event.code === 4401) {
|
|
79
|
+
log.error('Неавторизований: неправильний токен')
|
|
80
|
+
} else if (event.code === 4403) {
|
|
81
|
+
log.error('Заборонено: недостатньо прав')
|
|
84
82
|
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
)
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
lazy: true, // відкрити сокет тільки при першій subscription
|
|
86
|
+
lazyCloseTimeout: 15_000, // дочекатися 15 с після останньої відписки і лише тоді закрити сокет
|
|
87
|
+
keepAlive: 10_000, // ping кожні 10 с, щоб тримати з’єднання живим
|
|
88
|
+
retryAttempts: Infinity // автоперепідключення без ліміту
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
const wsLink = new GraphQLWsLink(wsClient)
|
|
92
92
|
|
|
93
93
|
// Розділяємо трафік: subscription -> WS, інше -> HTTP
|
|
94
94
|
const link = split(
|
package/src/token.js
CHANGED
|
@@ -78,8 +78,8 @@ export function resetApolloClient() {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
// Закриваємо WebSocket з'єднання
|
|
81
|
-
if (wsClient && wsClient.
|
|
82
|
-
wsClient.
|
|
81
|
+
if (wsClient && wsClient.dispose) {
|
|
82
|
+
wsClient.dispose()
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -123,7 +123,7 @@ export async function refreshToken() {
|
|
|
123
123
|
|
|
124
124
|
// перезавантажуємо щоб він вступив в дію
|
|
125
125
|
// wsClient.restart()
|
|
126
|
-
wsClient.
|
|
126
|
+
wsClient.dispose()
|
|
127
127
|
} else {
|
|
128
128
|
await defaultLogin(check.decoded, result.token)
|
|
129
129
|
}
|