@usermaven/nextjs 1.4.1-rc.58 → 1.4.1-rc.59
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/lib/UsermavenContext.d.ts +3 -0
- package/lib/UsermavenContext.js +5 -0
- package/lib/UsermavenProvider.d.ts +8 -0
- package/lib/UsermavenProvider.js +9 -0
- package/lib/client.d.ts +3 -0
- package/lib/client.js +7 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.es.js +1620 -0
- package/lib/index.js +15 -0
- package/lib/middlewareEnv.d.ts +13 -0
- package/lib/middlewareEnv.js +51 -0
- package/lib/usePageView.d.ts +7 -0
- package/lib/usePageView.js +48 -0
- package/lib/useUsermaven.d.ts +17 -0
- package/lib/useUsermaven.js +23 -0
- package/package.json +2 -2
package/lib/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.middlewareEnv = exports.usePageView = exports.useUsermaven = exports.createClient = exports.UsermavenProvider = exports.UsermavenContext = void 0;
|
|
4
|
+
var UsermavenContext_1 = require("./UsermavenContext");
|
|
5
|
+
Object.defineProperty(exports, "UsermavenContext", { enumerable: true, get: function () { return UsermavenContext_1.default; } });
|
|
6
|
+
var UsermavenProvider_1 = require("./UsermavenProvider");
|
|
7
|
+
Object.defineProperty(exports, "UsermavenProvider", { enumerable: true, get: function () { return UsermavenProvider_1.default; } });
|
|
8
|
+
var client_1 = require("./client");
|
|
9
|
+
Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_1.default; } });
|
|
10
|
+
var useUsermaven_1 = require("./useUsermaven");
|
|
11
|
+
Object.defineProperty(exports, "useUsermaven", { enumerable: true, get: function () { return useUsermaven_1.default; } });
|
|
12
|
+
var usePageView_1 = require("./usePageView");
|
|
13
|
+
Object.defineProperty(exports, "usePageView", { enumerable: true, get: function () { return usePageView_1.default; } });
|
|
14
|
+
var middlewareEnv_1 = require("./middlewareEnv");
|
|
15
|
+
Object.defineProperty(exports, "middlewareEnv", { enumerable: true, get: function () { return middlewareEnv_1.default; } });
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from "next/server";
|
|
2
|
+
import { ClientProperties } from "@usermaven/sdk-js";
|
|
3
|
+
declare function middlewareEnv(req: NextRequest, res: NextResponse, opts?: {
|
|
4
|
+
disableCookies?: boolean;
|
|
5
|
+
}): {
|
|
6
|
+
getAnonymousId({ name, domain }: {
|
|
7
|
+
name: any;
|
|
8
|
+
domain: any;
|
|
9
|
+
}): string;
|
|
10
|
+
getSourceIp(): string;
|
|
11
|
+
describeClient(): ClientProperties;
|
|
12
|
+
};
|
|
13
|
+
export default middlewareEnv;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cookie_1 = require("cookie");
|
|
4
|
+
function middlewareEnv(req, res, opts = {}) {
|
|
5
|
+
return {
|
|
6
|
+
getAnonymousId({ name, domain }) {
|
|
7
|
+
if (opts === null || opts === void 0 ? void 0 : opts.disableCookies) {
|
|
8
|
+
return "";
|
|
9
|
+
}
|
|
10
|
+
const cookie = req.cookies[name];
|
|
11
|
+
if (cookie) {
|
|
12
|
+
return cookie;
|
|
13
|
+
}
|
|
14
|
+
const cookieOpts = {
|
|
15
|
+
maxAge: 31622400 * 10,
|
|
16
|
+
httpOnly: false,
|
|
17
|
+
};
|
|
18
|
+
if (domain) {
|
|
19
|
+
cookieOpts.domain = domain;
|
|
20
|
+
}
|
|
21
|
+
let newId = Math.random().toString(36).substring(2, 12);
|
|
22
|
+
res.headers.set("Set-Cookie", (0, cookie_1.serialize)(name, newId, cookieOpts));
|
|
23
|
+
return newId;
|
|
24
|
+
},
|
|
25
|
+
getSourceIp() {
|
|
26
|
+
let ip = req.headers.get("x-forwarded-for") || req.headers.get("x-real-ip") || req.ip;
|
|
27
|
+
return ip && ip.split(",")[0].trim();
|
|
28
|
+
},
|
|
29
|
+
describeClient() {
|
|
30
|
+
var _a;
|
|
31
|
+
const requestHost = req.headers.get("x-forwarded-host") || req.headers.get("host") || req.nextUrl.hostname;
|
|
32
|
+
const proto = req.headers.get("x-forwarded-proto") || ((_a = req.nextUrl.protocol) === null || _a === void 0 ? void 0 : _a.replace(":", ""));
|
|
33
|
+
let query = req.nextUrl.search;
|
|
34
|
+
let path = req.nextUrl.pathname;
|
|
35
|
+
return {
|
|
36
|
+
doc_encoding: "",
|
|
37
|
+
doc_host: requestHost,
|
|
38
|
+
doc_path: req.url,
|
|
39
|
+
doc_search: query,
|
|
40
|
+
page_title: "",
|
|
41
|
+
referer: req.headers.get("referrer"),
|
|
42
|
+
screen_resolution: "",
|
|
43
|
+
url: `${proto}://${requestHost}${path || ""}${query || ""}`,
|
|
44
|
+
user_agent: req.headers.get("user-agent"),
|
|
45
|
+
user_language: req.headers.get("accept-language") && req.headers.get("accept-language").split(",")[0],
|
|
46
|
+
vp_size: "",
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
exports.default = middlewareEnv;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EventPayload, UsermavenClient } from "@usermaven/sdk-js";
|
|
2
|
+
declare function usePageView(usermaven: UsermavenClient, opts?: {
|
|
3
|
+
before?: (usermaven: UsermavenClient) => void;
|
|
4
|
+
typeName?: string;
|
|
5
|
+
payload?: EventPayload;
|
|
6
|
+
}): UsermavenClient;
|
|
7
|
+
export default usePageView;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
function useUrlChange() {
|
|
5
|
+
const [url, setUrl] = (0, react_1.useState)('');
|
|
6
|
+
(0, react_1.useEffect)(() => {
|
|
7
|
+
setUrl(window.location.href);
|
|
8
|
+
const handleUrlChange = () => {
|
|
9
|
+
setUrl(window.location.href);
|
|
10
|
+
};
|
|
11
|
+
window.addEventListener('popstate', handleUrlChange);
|
|
12
|
+
const originalPushState = window.history.pushState;
|
|
13
|
+
const originalReplaceState = window.history.replaceState;
|
|
14
|
+
window.history.pushState = function () {
|
|
15
|
+
originalPushState.apply(this, arguments);
|
|
16
|
+
handleUrlChange();
|
|
17
|
+
};
|
|
18
|
+
window.history.replaceState = function () {
|
|
19
|
+
originalReplaceState.apply(this, arguments);
|
|
20
|
+
handleUrlChange();
|
|
21
|
+
};
|
|
22
|
+
return () => {
|
|
23
|
+
window.removeEventListener('popstate', handleUrlChange);
|
|
24
|
+
window.history.pushState = originalPushState;
|
|
25
|
+
window.history.replaceState = originalReplaceState;
|
|
26
|
+
};
|
|
27
|
+
}, []);
|
|
28
|
+
return url;
|
|
29
|
+
}
|
|
30
|
+
function usePageView(usermaven, opts = {}) {
|
|
31
|
+
const url = useUrlChange();
|
|
32
|
+
const trackPageView = (0, react_1.useCallback)(() => {
|
|
33
|
+
if (typeof window === 'undefined') {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (opts.before) {
|
|
37
|
+
opts.before(usermaven);
|
|
38
|
+
}
|
|
39
|
+
usermaven.track((opts === null || opts === void 0 ? void 0 : opts.typeName) || 'pageview', Object.assign(Object.assign({}, opts.payload), { url: window.location.href, path: window.location.pathname, referrer: document.referrer, title: document.title }));
|
|
40
|
+
}, [usermaven, opts.before, opts.typeName, opts.payload]);
|
|
41
|
+
(0, react_1.useEffect)(() => {
|
|
42
|
+
if (url) {
|
|
43
|
+
trackPageView();
|
|
44
|
+
}
|
|
45
|
+
}, [url, trackPageView]);
|
|
46
|
+
return usermaven;
|
|
47
|
+
}
|
|
48
|
+
exports.default = usePageView;
|
|
@@ -0,0 +1,17 @@
|
|
|
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;
|
|
15
|
+
};
|
|
16
|
+
declare function useUsermaven(): UsermavenClient;
|
|
17
|
+
export default useUsermaven;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
const UsermavenContext_1 = require("./UsermavenContext");
|
|
5
|
+
function useUsermaven() {
|
|
6
|
+
const client = (0, react_1.useContext)(UsermavenContext_1.default);
|
|
7
|
+
if (!client) {
|
|
8
|
+
throw new Error("Before calling useUsermaven() hook, please wrap your component into <UsermavenProvider />. Read more in http://jitsu.com/docs/sending-data/js-sdk/react");
|
|
9
|
+
}
|
|
10
|
+
const id = (0, react_1.useCallback)((userData, doNotSendEvent) => client === null || client === void 0 ? void 0 : client.id(userData, doNotSendEvent), [client]);
|
|
11
|
+
const trackPageView = (0, react_1.useCallback)(() => client === null || client === void 0 ? void 0 : client.track('pageview'), [client]);
|
|
12
|
+
const track = (0, react_1.useCallback)((typeName, payload) => client === null || client === void 0 ? void 0 : client.track(typeName, payload), [client]);
|
|
13
|
+
const rawTrack = (0, react_1.useCallback)((payload) => client === null || client === void 0 ? void 0 : client.rawTrack(payload), [client]);
|
|
14
|
+
const set = (0, react_1.useCallback)((properties, opts) => client === null || client === void 0 ? void 0 : client.set(properties, opts), [client]);
|
|
15
|
+
const unset = (0, react_1.useCallback)((propertyName, opts) => client === null || client === void 0 ? void 0 : client.unset(propertyName, opts), [client]);
|
|
16
|
+
return Object.assign(Object.assign({}, client), { id,
|
|
17
|
+
track,
|
|
18
|
+
trackPageView,
|
|
19
|
+
rawTrack,
|
|
20
|
+
set,
|
|
21
|
+
unset });
|
|
22
|
+
}
|
|
23
|
+
exports.default = useUsermaven;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usermaven/nextjs",
|
|
3
|
-
"version": "1.4.1-rc.
|
|
3
|
+
"version": "1.4.1-rc.59",
|
|
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": "1.4.1-rc.
|
|
21
|
+
"@usermaven/sdk-js": "1.4.1-rc.59",
|
|
22
22
|
"cookie": "^0.5.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|