@usermaven/nextjs 1.4.4 → 1.5.1-rc.91
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 +4 -4
- package/lib/UsermavenContext.d.ts +0 -1
- package/lib/UsermavenProvider.d.ts +4 -4
- package/lib/UsermavenProvider.js +2 -2
- package/lib/client.d.ts +1 -1
- package/lib/client.js +3 -0
- package/lib/index.es.js +1348 -2581
- package/lib/middlewareEnv.d.ts +1 -1
- package/lib/usePageView.d.ts +3 -2
- package/lib/usePageView.js +53 -12
- package/lib/useUsermaven.d.ts +15 -3
- package/lib/useUsermaven.js +26 -7
- package/package.json +9 -8
package/lib/middlewareEnv.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NextRequest, NextResponse } from "next/server";
|
|
2
|
-
import { ClientProperties } from "@usermaven/sdk-js
|
|
2
|
+
import { ClientProperties } from "@usermaven/sdk-js";
|
|
3
3
|
declare function middlewareEnv(req: NextRequest, res: NextResponse, opts?: {
|
|
4
4
|
disableCookies?: boolean;
|
|
5
5
|
}): {
|
package/lib/usePageView.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { EventPayload, UsermavenClient } from "@usermaven/sdk-js";
|
|
2
|
-
|
|
2
|
+
interface UsePageViewOptions {
|
|
3
3
|
before?: (usermaven: UsermavenClient) => void;
|
|
4
4
|
typeName?: string;
|
|
5
5
|
payload?: EventPayload;
|
|
6
|
-
}
|
|
6
|
+
}
|
|
7
|
+
declare function usePageView(usermaven: UsermavenClient | null, opts?: UsePageViewOptions): UsermavenClient | null;
|
|
7
8
|
export default usePageView;
|
package/lib/usePageView.js
CHANGED
|
@@ -1,22 +1,63 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const react_1 = require("react");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
4
|
+
function useUrlChange() {
|
|
5
|
+
const [url, setUrl] = (0, react_1.useState)('');
|
|
6
|
+
const isClient = typeof window !== 'undefined';
|
|
7
7
|
(0, react_1.useEffect)(() => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
if (!isClient)
|
|
9
|
+
return;
|
|
10
|
+
setUrl(window.location.href);
|
|
11
|
+
const handleUrlChange = () => {
|
|
12
|
+
setUrl(window.location.href);
|
|
13
|
+
};
|
|
14
|
+
const history = window.history;
|
|
15
|
+
const originalPushState = history.pushState.bind(history);
|
|
16
|
+
const originalReplaceState = history.replaceState.bind(history);
|
|
17
|
+
const wrapHistoryMethod = (original) => {
|
|
18
|
+
return function (...args) {
|
|
19
|
+
const result = original.apply(this, args);
|
|
20
|
+
handleUrlChange();
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
13
23
|
};
|
|
14
|
-
|
|
15
|
-
|
|
24
|
+
history.pushState = wrapHistoryMethod(originalPushState);
|
|
25
|
+
history.replaceState = wrapHistoryMethod(originalReplaceState);
|
|
26
|
+
window.addEventListener('popstate', handleUrlChange);
|
|
16
27
|
return () => {
|
|
17
|
-
|
|
28
|
+
window.removeEventListener('popstate', handleUrlChange);
|
|
29
|
+
history.pushState = originalPushState;
|
|
30
|
+
history.replaceState = originalReplaceState;
|
|
18
31
|
};
|
|
19
|
-
}, [
|
|
32
|
+
}, [isClient]);
|
|
33
|
+
return url;
|
|
34
|
+
}
|
|
35
|
+
function usePageView(usermaven, opts = {}) {
|
|
36
|
+
const url = useUrlChange();
|
|
37
|
+
const isClient = typeof window !== 'undefined';
|
|
38
|
+
const lastTrackedUrl = (0, react_1.useRef)('');
|
|
39
|
+
const trackPageView = (0, react_1.useCallback)(() => {
|
|
40
|
+
if (!isClient || !usermaven)
|
|
41
|
+
return;
|
|
42
|
+
const currentUrl = window.location.href;
|
|
43
|
+
if (lastTrackedUrl.current === currentUrl)
|
|
44
|
+
return;
|
|
45
|
+
lastTrackedUrl.current = currentUrl;
|
|
46
|
+
if (opts.before) {
|
|
47
|
+
opts.before(usermaven);
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
usermaven.track((opts === null || opts === void 0 ? void 0 : opts.typeName) || 'pageview', Object.assign(Object.assign({}, opts.payload), { url: currentUrl, path: window.location.pathname, referrer: document.referrer || '', title: document.title, timestamp: new Date().toISOString() }));
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.warn('Usermaven pageview tracking error:', error);
|
|
54
|
+
}
|
|
55
|
+
}, [usermaven, opts.before, opts.typeName, opts.payload, isClient]);
|
|
56
|
+
(0, react_1.useEffect)(() => {
|
|
57
|
+
if (url) {
|
|
58
|
+
trackPageView();
|
|
59
|
+
}
|
|
60
|
+
}, [url, trackPageView]);
|
|
20
61
|
return usermaven;
|
|
21
62
|
}
|
|
22
63
|
exports.default = usePageView;
|
package/lib/useUsermaven.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
trackPageView: () =>
|
|
1
|
+
import { EventPayload, UserProps } from "@usermaven/sdk-js";
|
|
2
|
+
export type UsermavenClient = {
|
|
3
|
+
trackPageView: () => void;
|
|
4
|
+
id: (userData: UserProps, doNotSendEvent?: boolean) => Promise<void>;
|
|
5
|
+
track: (typeName: string, payload?: EventPayload) => void;
|
|
6
|
+
rawTrack: (payload: any) => void;
|
|
7
|
+
set: (properties: Record<string, any>, opts?: {
|
|
8
|
+
eventType?: string;
|
|
9
|
+
persist?: boolean;
|
|
10
|
+
}) => void;
|
|
11
|
+
unset: (propertyName: string, opts?: {
|
|
12
|
+
eventType?: string;
|
|
13
|
+
persist?: boolean;
|
|
14
|
+
}) => void;
|
|
4
15
|
};
|
|
16
|
+
declare function useUsermaven(): UsermavenClient;
|
|
5
17
|
export default useUsermaven;
|
package/lib/useUsermaven.js
CHANGED
|
@@ -1,21 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
const react_1 = require("react");
|
|
4
13
|
const UsermavenContext_1 = require("./UsermavenContext");
|
|
14
|
+
const createNoopClient = () => ({
|
|
15
|
+
trackPageView: () => { },
|
|
16
|
+
id: () => __awaiter(void 0, void 0, void 0, function* () { }),
|
|
17
|
+
track: () => { },
|
|
18
|
+
rawTrack: () => { },
|
|
19
|
+
set: () => { },
|
|
20
|
+
unset: () => { },
|
|
21
|
+
});
|
|
5
22
|
function useUsermaven() {
|
|
6
23
|
const client = (0, react_1.useContext)(UsermavenContext_1.default);
|
|
7
24
|
if (!client) {
|
|
8
|
-
|
|
25
|
+
return createNoopClient();
|
|
9
26
|
}
|
|
10
|
-
const id = (0, react_1.useCallback)((userData, doNotSendEvent) => client
|
|
11
|
-
const trackPageView = (0, react_1.useCallback)(() => client
|
|
12
|
-
const track = (0, react_1.useCallback)((typeName, payload) => client
|
|
13
|
-
const rawTrack = (0, react_1.useCallback)((payload) => client
|
|
14
|
-
const
|
|
27
|
+
const id = (0, react_1.useCallback)((userData, doNotSendEvent) => client.id(userData, doNotSendEvent), [client]);
|
|
28
|
+
const trackPageView = (0, react_1.useCallback)(() => client.track('pageview'), [client]);
|
|
29
|
+
const track = (0, react_1.useCallback)((typeName, payload) => client.track(typeName, payload), [client]);
|
|
30
|
+
const rawTrack = (0, react_1.useCallback)((payload) => client.rawTrack(payload), [client]);
|
|
31
|
+
const set = (0, react_1.useCallback)((properties, opts) => client.set(properties, opts), [client]);
|
|
32
|
+
const unset = (0, react_1.useCallback)((propertyName, opts) => client.unset(propertyName, opts), [client]);
|
|
15
33
|
return Object.assign(Object.assign({}, client), { id,
|
|
16
34
|
track,
|
|
17
35
|
trackPageView,
|
|
18
36
|
rawTrack,
|
|
19
|
-
|
|
37
|
+
set,
|
|
38
|
+
unset });
|
|
20
39
|
}
|
|
21
40
|
exports.default = useUsermaven;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usermaven/nextjs",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1-rc.91",
|
|
4
4
|
"description": "Usermaven JavaScript SDK for NextJS",
|
|
5
5
|
"author": "Usermaven <hello@usermaven.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@usermaven/sdk-js": "
|
|
21
|
+
"@usermaven/sdk-js": "1.5.1-rc.91",
|
|
22
22
|
"cookie": "^0.5.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
@@ -33,15 +33,16 @@
|
|
|
33
33
|
"next": "^12.1.5",
|
|
34
34
|
"react": "^17.0.2",
|
|
35
35
|
"rollup": "^2.70.1",
|
|
36
|
-
"rollup-plugin-peer-deps-external": "^2.2.4"
|
|
37
|
-
|
|
38
|
-
"scripts": {
|
|
39
|
-
"build": "rollup -c && tsc",
|
|
40
|
-
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
36
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
37
|
+
"tslib": "^2.3.1"
|
|
41
38
|
},
|
|
42
39
|
"repository": {
|
|
43
40
|
"type": "git",
|
|
44
41
|
"url": "https://github.com/usermaven/usermaven-js",
|
|
45
42
|
"directory": "packages/nextjs"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "rollup -c && tsc",
|
|
46
|
+
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
46
47
|
}
|
|
47
|
-
}
|
|
48
|
+
}
|