@nitra/vite-boot 4.0.8 → 4.1.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/vite-boot",
3
- "version": "4.0.8",
3
+ "version": "4.1.0",
4
4
  "description": "Vite boot",
5
5
  "type": "module",
6
6
  "exports": {
@@ -26,7 +26,7 @@
26
26
  "src"
27
27
  ],
28
28
  "dependencies": {
29
- "@apollo/client": "^4.0.5",
29
+ "@apollo/client": "^4.0.6",
30
30
  "@nitra/jwt-decode": "^1.2.0",
31
31
  "graphql-ws": "^6.0.6",
32
32
  "pinia": "^3.0.3",
package/src/apollo.js CHANGED
@@ -2,7 +2,6 @@ import { ApolloClient, InMemoryCache, createHttpLink, from, split } from '@apoll
2
2
  import { setContext } from '@apollo/client/link/context'
3
3
  import { GraphQLWsLink } from '@apollo/client/link/subscriptions'
4
4
  import { getMainDefinition } from '@apollo/client/utilities'
5
- // import { console } from '@nitra/console'
6
5
  import { createClient } from 'graphql-ws'
7
6
  import { checkToken, getToken } from './token.js'
8
7
  import { user } from './user.js'
@@ -26,9 +25,9 @@ export function logout() {
26
25
  }
27
26
 
28
27
  /**
29
- *
30
- * @param headers
31
- * @returns {object}
28
+ * Готує заголовки з JWT та роллю Hasura
29
+ * @param {Record<string, string>} headers - Початкові заголовки запиту
30
+ * @returns {{headers: Record<string, string>}} - Обʼєкт з підготовленими заголовками
32
31
  */
33
32
  function prepareHeaders(headers = {}) {
34
33
  const token = getToken()
package/src/login.js CHANGED
@@ -8,7 +8,7 @@ import { setUser } from './user.js'
8
8
  * Автоматичний вхід користувача
9
9
  * @returns {Promise<void>}
10
10
  */
11
- export async function autoLogin() {
11
+ export function autoLogin() {
12
12
  const token = getToken()
13
13
  if (!token) {
14
14
  return
@@ -19,16 +19,16 @@ export async function autoLogin() {
19
19
  return
20
20
  }
21
21
 
22
- return defaultLogin(check.decoded, token)
22
+ defaultLogin(check.decoded, token)
23
23
  }
24
24
 
25
25
  /**
26
26
  * Вхід або на попередню або на кореневу сторінку
27
- * @param {object} decoded
28
- * @param {string} raw? - необов'язково, але потрібно якщо використовується localStorage
29
- * @param raw
27
+ * @param {object} decoded - Розкодований JWT з Hasura claims
28
+ * @param {string} raw - JWT як рядок (для localStorage)
29
+ * @returns {void}
30
30
  */
31
- export async function defaultLogin(decoded, raw) {
31
+ export function defaultLogin(decoded, raw) {
32
32
  // Якщо задано що токен з localStorage
33
33
  localStorage.setItem('__session', raw)
34
34
 
package/src/router.js CHANGED
@@ -4,17 +4,17 @@ import { setUser, user } from './user.js'
4
4
  export let router
5
5
 
6
6
  /**
7
- *
8
- * @param r
7
+ * Зберігає інстанс роутера для подальшого використання
8
+ * @param {import('vue-router').Router} r - Інстанс роутера
9
9
  */
10
10
  export function setRouter(r) {
11
11
  router = r
12
12
  }
13
13
 
14
14
  /**
15
- *
16
- * @param to
17
- * @returns {boolean}
15
+ * Перевіряє доступ користувача до маршруту
16
+ * @param {import('vue-router').RouteLocationNormalized} to - Маршрут призначення
17
+ * @returns {boolean} - Чи дозволено доступ
18
18
  */
19
19
  export function canUserAccess(to) {
20
20
  // Якщо сторінка без обмеження по ролям то дозволяємо завжди
@@ -55,8 +55,9 @@ export function canUserAccess(to) {
55
55
  }
56
56
 
57
57
  /**
58
- *
59
- * @param to
58
+ * Перевіряє доступ за наявності ролей у метаданих маршруту
59
+ * @param {import('vue-router').RouteLocationNormalized} to - Маршрут призначення
60
+ * @returns {boolean} - Чи дозволено доступ
60
61
  */
61
62
  export function canUserAccessMetaRoles(to) {
62
63
  // Якщо сторінка без обмеження по ролям то дозволяємо завжди
package/src/token.js CHANGED
@@ -7,10 +7,9 @@ import { setUser, unsetUser } from './user.js'
7
7
  const allowedRoles = import.meta.env.VITE_HASURA_ROLE.split(',')
8
8
 
9
9
  /**
10
- * Запам'ятовуємо поточну сторінку
11
- * та перенаправляємо на сторінку входу
10
+ * Перевіряє коректність JWT токена
12
11
  * @param {string} token - JWT токен
13
- * @returns {{result: string, decoded?: {}}} - Повертає результат перевірки токена
12
+ * @returns {{result: 'ok'|'expired'|'cleaned'|'broken-role', decoded?: object}} - Результат перевірки
14
13
  */
15
14
  export function checkToken(token) {
16
15
  const decoded = jwtDecode(token)
package/src/user.js CHANGED
@@ -3,15 +3,15 @@ const allowedRoles = import.meta.env.VITE_HASURA_ROLE.split(',')
3
3
  export let user = {}
4
4
 
5
5
  /**
6
- *
6
+ * Очищає дані поточного користувача
7
7
  */
8
8
  export function unsetUser() {
9
9
  user = {}
10
10
  }
11
11
 
12
12
  /**
13
- *
14
- * @param u
13
+ * Встановлює дані користувача з розкодованого JWT
14
+ * @param {object} u - Обʼєкт з Hasura claims розкодованого токена
15
15
  */
16
16
  export function setUser(u) {
17
17
  user = u
@@ -23,10 +23,10 @@ export function setUser(u) {
23
23
  }
24
24
 
25
25
  /**
26
- *
27
- * @param a
28
- * @param b
29
- * @returns {string[]}
26
+ * Повертає спільні елементи двох масивів рядків
27
+ * @param {string[]} a - Перший масив рядків
28
+ * @param {string[]} b - Другий масив рядків
29
+ * @returns {string[]} - Масив спільних значень
30
30
  */
31
31
  function intersection(a, b) {
32
32
  const setA = new Set(a)