@usermaven/vue 1.4.1-rc.69

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 ADDED
@@ -0,0 +1,74 @@
1
+ # @usermaven/vue
2
+
3
+ Vue.js SDK for Usermaven Analytics
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @usermaven/vue
9
+ # or
10
+ yarn add @usermaven/vue
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ### Setup the Plugin
16
+
17
+ ```typescript
18
+ import { createApp } from 'vue'
19
+ import { UsermavenPlugin } from '@usermaven/vue'
20
+ import App from './App.vue'
21
+
22
+ const app = createApp(App)
23
+
24
+ app.use(UsermavenPlugin, {
25
+ key: 'your-api-key',
26
+ trackingHost: 'https://events.usermaven.com',
27
+ autocapture: true,
28
+ // Additional options
29
+
30
+ })
31
+
32
+ app.mount('#app')
33
+ ```
34
+
35
+ ### Using the Composables
36
+
37
+ #### useUsermaven
38
+
39
+ ```vue
40
+ <script setup>
41
+ import { useUsermaven } from '@usermaven/vue'
42
+
43
+ const usermaven = useUsermaven()
44
+
45
+ // Track an event
46
+ usermaven.track('button_click', {
47
+ buttonId: 'submit-button'
48
+ })
49
+
50
+ // Identify a user
51
+ usermaven.identify('user123', {
52
+ email: 'user@example.com',
53
+ name: 'John Doe'
54
+ })
55
+ </script>
56
+ ```
57
+
58
+ #### usePageView
59
+
60
+ ```vue
61
+ <script setup>
62
+ import { usePageView } from '@usermaven/vue'
63
+
64
+ // Automatically tracks page views when route changes
65
+ const { track } = usePageView()
66
+
67
+ // Manually track a page view if needed
68
+ track('pageview')
69
+ </script>
70
+ ```
71
+
72
+ ## License
73
+
74
+ MIT
@@ -0,0 +1,132 @@
1
+ import { usermavenClient } from '@usermaven/sdk-js';
2
+ import { inject, ref, watch, onMounted, onUnmounted } from '@vue/runtime-core';
3
+
4
+ function createClient(params) {
5
+ return usermavenClient(params);
6
+ }
7
+
8
+ var USERMAVEN_INJECTION_KEY$1 = 'usermaven';
9
+ function useUsermaven() {
10
+ var usermaven = inject(USERMAVEN_INJECTION_KEY$1);
11
+ if (!usermaven) {
12
+ throw new Error('Usermaven instance not found. Make sure to use UsermavenPlugin.');
13
+ }
14
+ return usermaven;
15
+ }
16
+
17
+ /******************************************************************************
18
+ Copyright (c) Microsoft Corporation.
19
+
20
+ Permission to use, copy, modify, and/or distribute this software for any
21
+ purpose with or without fee is hereby granted.
22
+
23
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
24
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
25
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
26
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
27
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
28
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
29
+ PERFORMANCE OF THIS SOFTWARE.
30
+ ***************************************************************************** */
31
+
32
+ var __assign = function() {
33
+ __assign = Object.assign || function __assign(t) {
34
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
35
+ s = arguments[i];
36
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
37
+ }
38
+ return t;
39
+ };
40
+ return __assign.apply(this, arguments);
41
+ };
42
+
43
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
44
+ var e = new Error(message);
45
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
46
+ };
47
+
48
+ // Composable to track URL changes
49
+ function useUrlChange() {
50
+ var url = ref(window.location.href);
51
+ var lastUrl = ref(window.location.href);
52
+ var originalPushState = ref();
53
+ var originalReplaceState = ref();
54
+ var handleUrlChange = function () {
55
+ var currentUrl = window.location.href;
56
+ if (currentUrl !== lastUrl.value) {
57
+ lastUrl.value = currentUrl;
58
+ url.value = currentUrl;
59
+ }
60
+ };
61
+ onMounted(function () {
62
+ window.addEventListener('popstate', handleUrlChange);
63
+ // Store original history methods
64
+ originalPushState.value = window.history.pushState;
65
+ originalReplaceState.value = window.history.replaceState;
66
+ // Override history methods
67
+ window.history.pushState = function () {
68
+ var args = [];
69
+ for (var _i = 0; _i < arguments.length; _i++) {
70
+ args[_i] = arguments[_i];
71
+ }
72
+ if (originalPushState.value) {
73
+ originalPushState.value.apply(window.history, args);
74
+ }
75
+ handleUrlChange();
76
+ };
77
+ window.history.replaceState = function () {
78
+ var args = [];
79
+ for (var _i = 0; _i < arguments.length; _i++) {
80
+ args[_i] = arguments[_i];
81
+ }
82
+ if (originalReplaceState.value) {
83
+ originalReplaceState.value.apply(window.history, args);
84
+ }
85
+ handleUrlChange();
86
+ };
87
+ });
88
+ onUnmounted(function () {
89
+ window.removeEventListener('popstate', handleUrlChange);
90
+ if (originalPushState.value && originalReplaceState.value) {
91
+ window.history.pushState = originalPushState.value;
92
+ window.history.replaceState = originalReplaceState.value;
93
+ }
94
+ });
95
+ return url;
96
+ }
97
+ // usePageView composable
98
+ function usePageView(opts) {
99
+ if (opts === void 0) { opts = {}; }
100
+ var url = useUrlChange();
101
+ var usermaven = useUsermaven();
102
+ var lastTrackedUrl = ref('');
103
+ var trackPageView = function () {
104
+ if (url.value !== lastTrackedUrl.value) {
105
+ if (opts.before) {
106
+ opts.before(usermaven);
107
+ }
108
+ usermaven.track((opts === null || opts === void 0 ? void 0 : opts.typeName) || 'pageview', __assign(__assign({}, opts.payload), { url: window.location.href, path: window.location.pathname, referrer: document.referrer, title: document.title }));
109
+ lastTrackedUrl.value = url.value;
110
+ }
111
+ };
112
+ watch(url, function () {
113
+ trackPageView();
114
+ });
115
+ onMounted(function () {
116
+ trackPageView();
117
+ });
118
+ return usermaven;
119
+ }
120
+
121
+ var USERMAVEN_INJECTION_KEY = 'usermaven';
122
+ var UsermavenPlugin = {
123
+ install: function (app, options) {
124
+ console.log('UsermavenPlugin installed', options);
125
+ var client = createClient(options);
126
+ app.config.globalProperties.$usermaven = client;
127
+ app.provide(USERMAVEN_INJECTION_KEY, client);
128
+ }
129
+ };
130
+
131
+ export { UsermavenPlugin, createClient, usePageView, useUsermaven };
132
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/client.ts","../src/useUsermaven.ts","../src/usePageView.ts","../src/plugin.ts"],"sourcesContent":["import { UsermavenClient, usermavenClient, UsermavenOptions } from \"@usermaven/sdk-js\";\n\nfunction createClient(params: UsermavenOptions): UsermavenClient {\n return usermavenClient(params)\n}\n\nexport default createClient","import { inject } from '@vue/runtime-core'\nimport { UsermavenClient } from '@usermaven/sdk-js'\n\nconst USERMAVEN_INJECTION_KEY = 'usermaven'\n\nexport default function useUsermaven() {\n const usermaven = inject<UsermavenClient>(USERMAVEN_INJECTION_KEY)\n \n if (!usermaven) {\n throw new Error('Usermaven instance not found. Make sure to use UsermavenPlugin.')\n }\n\n return usermaven\n}\n","import { ref, onMounted, onUnmounted, watch } from '@vue/runtime-core'\nimport useUsermaven from './useUsermaven'\nimport { EventPayload, UsermavenClient } from '@usermaven/sdk-js'\n\n// Composable to track URL changes\nfunction useUrlChange() {\n const url = ref(window.location.href)\n const lastUrl = ref(window.location.href)\n const originalPushState = ref<typeof window.history.pushState>()\n const originalReplaceState = ref<typeof window.history.replaceState>()\n\n const handleUrlChange = () => {\n const currentUrl = window.location.href\n if (currentUrl !== lastUrl.value) {\n lastUrl.value = currentUrl\n url.value = currentUrl\n }\n }\n\n onMounted(() => {\n window.addEventListener('popstate', handleUrlChange)\n\n // Store original history methods\n originalPushState.value = window.history.pushState\n originalReplaceState.value = window.history.replaceState\n\n // Override history methods\n window.history.pushState = function (...args: any[]) {\n if (originalPushState.value) {\n originalPushState.value.apply(window.history, args as any)\n }\n handleUrlChange()\n }\n\n window.history.replaceState = function (...args: any[]) {\n if (originalReplaceState.value) {\n originalReplaceState.value.apply(window.history, args as any)\n }\n handleUrlChange()\n }\n })\n\n onUnmounted(() => {\n window.removeEventListener('popstate', handleUrlChange)\n if (originalPushState.value && originalReplaceState.value) {\n window.history.pushState = originalPushState.value\n window.history.replaceState = originalReplaceState.value\n }\n })\n\n return url\n}\n\n// usePageView composable\nexport default function usePageView(opts: {\n before?: (usermaven: UsermavenClient) => void\n typeName?: string\n payload?: EventPayload\n} = {}): UsermavenClient {\n const url = useUrlChange()\n const usermaven = useUsermaven()\n const lastTrackedUrl = ref('')\n\n const trackPageView = () => {\n if (url.value !== lastTrackedUrl.value) {\n if (opts.before) {\n opts.before(usermaven)\n }\n usermaven.track(opts?.typeName || 'pageview', {\n ...opts.payload,\n url: window.location.href,\n path: window.location.pathname,\n referrer: document.referrer,\n title: document.title\n })\n lastTrackedUrl.value = url.value\n }\n }\n\n watch(url, () => {\n trackPageView()\n })\n\n onMounted(() => {\n trackPageView()\n })\n\n return usermaven\n}\n","import { App } from '@vue/runtime-core'\nimport createClient from './client'\nimport { UsermavenOptions } from \"@usermaven/sdk-js\"\n\nconst USERMAVEN_INJECTION_KEY = 'usermaven'\n\nexport const UsermavenPlugin = {\n install: (app: App, options: UsermavenOptions) => {\n console.log('UsermavenPlugin installed', options)\n const client = createClient(options)\n app.config.globalProperties.$usermaven = client\n app.provide(USERMAVEN_INJECTION_KEY, client)\n }\n}\n"],"names":["USERMAVEN_INJECTION_KEY"],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,139 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var sdkJs = require('@usermaven/sdk-js');
6
+ var runtimeCore = require('@vue/runtime-core');
7
+
8
+ function createClient(params) {
9
+ return sdkJs.usermavenClient(params);
10
+ }
11
+
12
+ var USERMAVEN_INJECTION_KEY$1 = 'usermaven';
13
+ function useUsermaven() {
14
+ var usermaven = runtimeCore.inject(USERMAVEN_INJECTION_KEY$1);
15
+ if (!usermaven) {
16
+ throw new Error('Usermaven instance not found. Make sure to use UsermavenPlugin.');
17
+ }
18
+ return usermaven;
19
+ }
20
+
21
+ /******************************************************************************
22
+ Copyright (c) Microsoft Corporation.
23
+
24
+ Permission to use, copy, modify, and/or distribute this software for any
25
+ purpose with or without fee is hereby granted.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
28
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
29
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
30
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
31
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
32
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
33
+ PERFORMANCE OF THIS SOFTWARE.
34
+ ***************************************************************************** */
35
+
36
+ var __assign = function() {
37
+ __assign = Object.assign || function __assign(t) {
38
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
39
+ s = arguments[i];
40
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
41
+ }
42
+ return t;
43
+ };
44
+ return __assign.apply(this, arguments);
45
+ };
46
+
47
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
48
+ var e = new Error(message);
49
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
50
+ };
51
+
52
+ // Composable to track URL changes
53
+ function useUrlChange() {
54
+ var url = runtimeCore.ref(window.location.href);
55
+ var lastUrl = runtimeCore.ref(window.location.href);
56
+ var originalPushState = runtimeCore.ref();
57
+ var originalReplaceState = runtimeCore.ref();
58
+ var handleUrlChange = function () {
59
+ var currentUrl = window.location.href;
60
+ if (currentUrl !== lastUrl.value) {
61
+ lastUrl.value = currentUrl;
62
+ url.value = currentUrl;
63
+ }
64
+ };
65
+ runtimeCore.onMounted(function () {
66
+ window.addEventListener('popstate', handleUrlChange);
67
+ // Store original history methods
68
+ originalPushState.value = window.history.pushState;
69
+ originalReplaceState.value = window.history.replaceState;
70
+ // Override history methods
71
+ window.history.pushState = function () {
72
+ var args = [];
73
+ for (var _i = 0; _i < arguments.length; _i++) {
74
+ args[_i] = arguments[_i];
75
+ }
76
+ if (originalPushState.value) {
77
+ originalPushState.value.apply(window.history, args);
78
+ }
79
+ handleUrlChange();
80
+ };
81
+ window.history.replaceState = function () {
82
+ var args = [];
83
+ for (var _i = 0; _i < arguments.length; _i++) {
84
+ args[_i] = arguments[_i];
85
+ }
86
+ if (originalReplaceState.value) {
87
+ originalReplaceState.value.apply(window.history, args);
88
+ }
89
+ handleUrlChange();
90
+ };
91
+ });
92
+ runtimeCore.onUnmounted(function () {
93
+ window.removeEventListener('popstate', handleUrlChange);
94
+ if (originalPushState.value && originalReplaceState.value) {
95
+ window.history.pushState = originalPushState.value;
96
+ window.history.replaceState = originalReplaceState.value;
97
+ }
98
+ });
99
+ return url;
100
+ }
101
+ // usePageView composable
102
+ function usePageView(opts) {
103
+ if (opts === void 0) { opts = {}; }
104
+ var url = useUrlChange();
105
+ var usermaven = useUsermaven();
106
+ var lastTrackedUrl = runtimeCore.ref('');
107
+ var trackPageView = function () {
108
+ if (url.value !== lastTrackedUrl.value) {
109
+ if (opts.before) {
110
+ opts.before(usermaven);
111
+ }
112
+ usermaven.track((opts === null || opts === void 0 ? void 0 : opts.typeName) || 'pageview', __assign(__assign({}, opts.payload), { url: window.location.href, path: window.location.pathname, referrer: document.referrer, title: document.title }));
113
+ lastTrackedUrl.value = url.value;
114
+ }
115
+ };
116
+ runtimeCore.watch(url, function () {
117
+ trackPageView();
118
+ });
119
+ runtimeCore.onMounted(function () {
120
+ trackPageView();
121
+ });
122
+ return usermaven;
123
+ }
124
+
125
+ var USERMAVEN_INJECTION_KEY = 'usermaven';
126
+ var UsermavenPlugin = {
127
+ install: function (app, options) {
128
+ console.log('UsermavenPlugin installed', options);
129
+ var client = createClient(options);
130
+ app.config.globalProperties.$usermaven = client;
131
+ app.provide(USERMAVEN_INJECTION_KEY, client);
132
+ }
133
+ };
134
+
135
+ exports.UsermavenPlugin = UsermavenPlugin;
136
+ exports.createClient = createClient;
137
+ exports.usePageView = usePageView;
138
+ exports.useUsermaven = useUsermaven;
139
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/client.ts","../src/useUsermaven.ts","../src/usePageView.ts","../src/plugin.ts"],"sourcesContent":["import { UsermavenClient, usermavenClient, UsermavenOptions } from \"@usermaven/sdk-js\";\n\nfunction createClient(params: UsermavenOptions): UsermavenClient {\n return usermavenClient(params)\n}\n\nexport default createClient","import { inject } from '@vue/runtime-core'\nimport { UsermavenClient } from '@usermaven/sdk-js'\n\nconst USERMAVEN_INJECTION_KEY = 'usermaven'\n\nexport default function useUsermaven() {\n const usermaven = inject<UsermavenClient>(USERMAVEN_INJECTION_KEY)\n \n if (!usermaven) {\n throw new Error('Usermaven instance not found. Make sure to use UsermavenPlugin.')\n }\n\n return usermaven\n}\n","import { ref, onMounted, onUnmounted, watch } from '@vue/runtime-core'\nimport useUsermaven from './useUsermaven'\nimport { EventPayload, UsermavenClient } from '@usermaven/sdk-js'\n\n// Composable to track URL changes\nfunction useUrlChange() {\n const url = ref(window.location.href)\n const lastUrl = ref(window.location.href)\n const originalPushState = ref<typeof window.history.pushState>()\n const originalReplaceState = ref<typeof window.history.replaceState>()\n\n const handleUrlChange = () => {\n const currentUrl = window.location.href\n if (currentUrl !== lastUrl.value) {\n lastUrl.value = currentUrl\n url.value = currentUrl\n }\n }\n\n onMounted(() => {\n window.addEventListener('popstate', handleUrlChange)\n\n // Store original history methods\n originalPushState.value = window.history.pushState\n originalReplaceState.value = window.history.replaceState\n\n // Override history methods\n window.history.pushState = function (...args: any[]) {\n if (originalPushState.value) {\n originalPushState.value.apply(window.history, args as any)\n }\n handleUrlChange()\n }\n\n window.history.replaceState = function (...args: any[]) {\n if (originalReplaceState.value) {\n originalReplaceState.value.apply(window.history, args as any)\n }\n handleUrlChange()\n }\n })\n\n onUnmounted(() => {\n window.removeEventListener('popstate', handleUrlChange)\n if (originalPushState.value && originalReplaceState.value) {\n window.history.pushState = originalPushState.value\n window.history.replaceState = originalReplaceState.value\n }\n })\n\n return url\n}\n\n// usePageView composable\nexport default function usePageView(opts: {\n before?: (usermaven: UsermavenClient) => void\n typeName?: string\n payload?: EventPayload\n} = {}): UsermavenClient {\n const url = useUrlChange()\n const usermaven = useUsermaven()\n const lastTrackedUrl = ref('')\n\n const trackPageView = () => {\n if (url.value !== lastTrackedUrl.value) {\n if (opts.before) {\n opts.before(usermaven)\n }\n usermaven.track(opts?.typeName || 'pageview', {\n ...opts.payload,\n url: window.location.href,\n path: window.location.pathname,\n referrer: document.referrer,\n title: document.title\n })\n lastTrackedUrl.value = url.value\n }\n }\n\n watch(url, () => {\n trackPageView()\n })\n\n onMounted(() => {\n trackPageView()\n })\n\n return usermaven\n}\n","import { App } from '@vue/runtime-core'\nimport createClient from './client'\nimport { UsermavenOptions } from \"@usermaven/sdk-js\"\n\nconst USERMAVEN_INJECTION_KEY = 'usermaven'\n\nexport const UsermavenPlugin = {\n install: (app: App, options: UsermavenOptions) => {\n console.log('UsermavenPlugin installed', options)\n const client = createClient(options)\n app.config.globalProperties.$usermaven = client\n app.provide(USERMAVEN_INJECTION_KEY, client)\n }\n}\n"],"names":["usermavenClient","USERMAVEN_INJECTION_KEY","inject","ref","onMounted","onUnmounted","watch"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@usermaven/vue",
3
+ "version": "1.4.1-rc.69",
4
+ "description": "Vue.js SDK for Usermaven Analytics",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "dependencies": {
9
+ "@usermaven/sdk-js": "1.4.1-rc.69"
10
+ },
11
+ "peerDependencies": {
12
+ "vue": "^3.0.0"
13
+ },
14
+ "devDependencies": {
15
+ "@types/jest": "^27.0.0",
16
+ "@types/node": "^18.0.0",
17
+ "@vue/runtime-core": "^3.3.4",
18
+ "rollup": "^2.60.0",
19
+ "rollup-plugin-typescript2": "^0.31.0",
20
+ "typescript": "^4.5.0",
21
+ "vue": "^3.3.4",
22
+ "tslib": "^2.3.1"
23
+ },
24
+ "scripts": {
25
+ "build": "rollup -c",
26
+ "dev": "rollup -c -w",
27
+ "test": "jest"
28
+ }
29
+ }