@fingerru/vue 1.0.0-next.0 → 1.0.0-next.2
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/README.md +72 -66
- package/package.json +17 -3
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# @fingerru/vue
|
|
2
2
|
|
|
3
|
-
Vue 3
|
|
4
|
-
приложения и получайте данные visitor через Composition API или Options API.
|
|
3
|
+
Vue 3 SDK для идентификации посетителей сайта.
|
|
5
4
|
|
|
6
5
|
## Установка
|
|
7
6
|
|
|
@@ -9,9 +8,12 @@ Vue 3-обёртка над `@fingerru/agent`. Подключите плагин
|
|
|
9
8
|
pnpm add @fingerru/vue @fingerru/agent
|
|
10
9
|
```
|
|
11
10
|
|
|
12
|
-
##
|
|
11
|
+
## Быстрый старт
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
### 1. Подключите плагин
|
|
14
|
+
|
|
15
|
+
Зарегистрируйте `createFingprint()` при создании приложения. Передайте публичный
|
|
16
|
+
ключ проекта в `apiKey`:
|
|
15
17
|
|
|
16
18
|
```ts
|
|
17
19
|
import { createApp } from 'vue'
|
|
@@ -27,84 +29,74 @@ createApp(App)
|
|
|
27
29
|
.mount('#app')
|
|
28
30
|
```
|
|
29
31
|
|
|
30
|
-
`endpoint`
|
|
31
|
-
|
|
32
|
+
При необходимости укажите `endpoint` для своего API или proxy, `runtimeUrl` для
|
|
33
|
+
своего CDN и `loadTimeout` для времени загрузки runtime.
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
### 2. Используйте `useVisitorData`
|
|
36
|
+
|
|
37
|
+
Composable возвращает visitor-данные и состояние запроса:
|
|
38
|
+
|
|
39
|
+
```vue
|
|
40
|
+
<script setup lang="ts">
|
|
41
|
+
import { useVisitorData } from '@fingerru/vue'
|
|
42
|
+
|
|
43
|
+
const { data, error, isLoading } = useVisitorData({ immediate: true })
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<p v-if="isLoading">Получаем данные…</p>
|
|
48
|
+
<p v-else-if="error">Не удалось получить данные: {{ error.message }}</p>
|
|
49
|
+
<p v-else>Visitor: {{ data?.user }}</p>
|
|
50
|
+
</template>
|
|
44
51
|
```
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
Передайте `{ immediate: true }`, чтобы выполнить запрос после монтирования
|
|
54
|
+
компонента. По умолчанию запрос запускается только после вызова `getData()`.
|
|
55
|
+
|
|
56
|
+
## Запрос по действию пользователя
|
|
47
57
|
|
|
48
|
-
`
|
|
49
|
-
|
|
50
|
-
`error`, `isLoading` и `isFetched`, а также метод `getData()`.
|
|
58
|
+
Используйте `getData()`, когда идентификатор нужен при конкретном действии,
|
|
59
|
+
например при отправке формы:
|
|
51
60
|
|
|
52
61
|
```vue
|
|
53
62
|
<script setup lang="ts">
|
|
54
63
|
import { useVisitorData } from '@fingerru/vue'
|
|
55
|
-
import { watch } from 'vue'
|
|
56
64
|
|
|
57
|
-
const {
|
|
58
|
-
// Укажите true, если идентификация нужна сразу после mount.
|
|
59
|
-
immediate: false,
|
|
60
|
-
})
|
|
65
|
+
const { getData, isLoading } = useVisitorData()
|
|
61
66
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
})
|
|
67
|
+
async function handleSubmit() {
|
|
68
|
+
const visitor = await getData()
|
|
69
|
+
console.log(visitor.user)
|
|
70
|
+
}
|
|
67
71
|
</script>
|
|
68
72
|
|
|
69
73
|
<template>
|
|
70
|
-
<button
|
|
71
|
-
|
|
72
|
-
<p v-if="isLoading">Получаем visitor…</p>
|
|
73
|
-
<p v-else-if="error">{{ error.message }}</p>
|
|
74
|
-
<p v-else-if="isFetched">Visitor: {{ data?.user }}</p>
|
|
74
|
+
<button :disabled="isLoading" @click="handleSubmit">Отправить</button>
|
|
75
75
|
</template>
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
По умолчанию запрос не запускается автоматически. Передайте
|
|
82
|
-
`{ immediate: true }`, чтобы выполнить его после монтирования компонента.
|
|
83
|
-
Повторные вызовы `getData()` одного composable во время активного запроса
|
|
84
|
-
получают один и тот же `Promise`.
|
|
78
|
+
Для `useVisitorData()` можно задать `timeout` и `ignoreCache`; эти же параметры
|
|
79
|
+
можно передать непосредственно в `getData()`.
|
|
85
80
|
|
|
86
|
-
|
|
81
|
+
## Кеширование
|
|
87
82
|
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
Кеширование выключено по умолчанию. Чтобы включить его, добавьте `cache` в
|
|
84
|
+
настройки плагина:
|
|
90
85
|
|
|
91
86
|
```ts
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
createFingprint({
|
|
88
|
+
apiKey: 'pk_live_example',
|
|
89
|
+
cache: {
|
|
90
|
+
storage: 'sessionStorage',
|
|
91
|
+
duration: 3600,
|
|
92
|
+
},
|
|
93
|
+
})
|
|
96
94
|
```
|
|
97
95
|
|
|
98
|
-
| Параметр | Описание |
|
|
99
|
-
| ------------- | ------------------------------------------------------- |
|
|
100
|
-
| `immediate` | Выполнить запрос после mount. По умолчанию — `false`. |
|
|
101
|
-
| `timeout` | Максимальное время API-запроса в миллисекундах. |
|
|
102
|
-
| `ignoreCache` | Не использовать сохранённый результат для этого вызова. |
|
|
103
|
-
|
|
104
96
|
## Options API
|
|
105
97
|
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
Плагин добавляет `$fingprint` в компоненты. Для получения данных вызовите
|
|
99
|
+
`this.$fingprint.getVisitorData()`:
|
|
108
100
|
|
|
109
101
|
```vue
|
|
110
102
|
<script lang="ts">
|
|
@@ -112,23 +104,19 @@ import { defineComponent } from 'vue'
|
|
|
112
104
|
|
|
113
105
|
export default defineComponent({
|
|
114
106
|
methods: {
|
|
115
|
-
async getVisitorData()
|
|
107
|
+
async getVisitorData() {
|
|
116
108
|
const visitor = await this.$fingprint.getVisitorData()
|
|
117
109
|
console.log(visitor.user)
|
|
118
110
|
},
|
|
119
111
|
},
|
|
120
112
|
})
|
|
121
113
|
</script>
|
|
122
|
-
|
|
123
|
-
<template>
|
|
124
|
-
<button type="button" @click="getVisitorData">Получить visitor</button>
|
|
125
|
-
</template>
|
|
126
114
|
```
|
|
127
115
|
|
|
128
116
|
## Nuxt
|
|
129
117
|
|
|
130
|
-
Fingerprinting
|
|
131
|
-
|
|
118
|
+
Fingerprinting работает только в браузере. Зарегистрируйте SDK в клиентском
|
|
119
|
+
плагине `plugins/fingprint.client.ts`:
|
|
132
120
|
|
|
133
121
|
```ts
|
|
134
122
|
import { createFingprint } from '@fingerru/vue'
|
|
@@ -144,7 +132,7 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
144
132
|
})
|
|
145
133
|
```
|
|
146
134
|
|
|
147
|
-
|
|
135
|
+
Передайте публичный ключ через runtime-конфигурацию:
|
|
148
136
|
|
|
149
137
|
```ts
|
|
150
138
|
export default defineNuxtConfig({
|
|
@@ -155,3 +143,21 @@ export default defineNuxtConfig({
|
|
|
155
143
|
},
|
|
156
144
|
})
|
|
157
145
|
```
|
|
146
|
+
|
|
147
|
+
Используйте `useVisitorData()` в клиентском компоненте, например в
|
|
148
|
+
`components/VisitorData.client.vue`:
|
|
149
|
+
|
|
150
|
+
```vue
|
|
151
|
+
<script setup lang="ts">
|
|
152
|
+
import { useVisitorData } from '@fingerru/vue'
|
|
153
|
+
|
|
154
|
+
const { data, getData, isLoading } = useVisitorData()
|
|
155
|
+
</script>
|
|
156
|
+
|
|
157
|
+
<template>
|
|
158
|
+
<button :disabled="isLoading" @click="getData()">
|
|
159
|
+
Получить visitor
|
|
160
|
+
</button>
|
|
161
|
+
<p v-if="data">Visitor: {{ data.user }}</p>
|
|
162
|
+
</template>
|
|
163
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fingerru/vue",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.2",
|
|
4
4
|
"description": "Vue SDK for the Fingprint service.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"browser",
|
|
7
|
+
"fingerprint",
|
|
8
|
+
"fingerprinting",
|
|
9
|
+
"browser fingerprint",
|
|
10
|
+
"visitor identification",
|
|
11
|
+
"identification",
|
|
12
|
+
"device fingerprint",
|
|
13
|
+
"fraud",
|
|
14
|
+
"fraud detection",
|
|
15
|
+
"fraud prevention",
|
|
16
|
+
"privacy",
|
|
17
|
+
"vue",
|
|
18
|
+
"vue 3"
|
|
19
|
+
],
|
|
5
20
|
"type": "module",
|
|
6
21
|
"module": "./dist/index.js",
|
|
7
22
|
"types": "./dist/types/index.d.ts",
|
|
@@ -16,7 +31,7 @@
|
|
|
16
31
|
"dist"
|
|
17
32
|
],
|
|
18
33
|
"dependencies": {
|
|
19
|
-
"@fingerru/agent": "1.0.0-next.
|
|
34
|
+
"@fingerru/agent": "1.0.0-next.2"
|
|
20
35
|
},
|
|
21
36
|
"devDependencies": {
|
|
22
37
|
"vue": "^3.0.0",
|
|
@@ -26,7 +41,6 @@
|
|
|
26
41
|
"peerDependencies": {
|
|
27
42
|
"vue": "^3.0.0"
|
|
28
43
|
},
|
|
29
|
-
"repository": "https://github.com/ifksco/fingerprint_agent",
|
|
30
44
|
"license": "MIT",
|
|
31
45
|
"sideEffects": false,
|
|
32
46
|
"publishConfig": {
|