pulse-feedback-widget 1.1.0 → 1.3.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/dist/PulseWidget.d.ts +1 -1
- package/dist/PulseWidget.d.ts.map +1 -1
- package/dist/PulseWidget.mjs +16 -4
- package/dist/PulseWidget.mjs.map +1 -1
- package/dist/components/FeedbackForm.d.ts +4 -1
- package/dist/components/FeedbackForm.d.ts.map +1 -1
- package/dist/components/FeedbackForm.mjs +5 -6
- package/dist/components/FeedbackForm.mjs.map +1 -1
- package/dist/components/FeedbackPanel.d.ts +4 -1
- package/dist/components/FeedbackPanel.d.ts.map +1 -1
- package/dist/components/FeedbackPanel.mjs +2 -2
- package/dist/components/FeedbackPanel.mjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/api.d.ts +3 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.mjs +2 -1
- package/dist/lib/api.mjs.map +1 -1
- package/dist/lib/http.d.ts +1 -1
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.mjs +3 -1
- package/dist/lib/http.mjs.map +1 -1
- package/dist/lib/log-collector.d.ts +19 -0
- package/dist/lib/log-collector.d.ts.map +1 -0
- package/dist/lib/log-collector.mjs +180 -0
- package/dist/lib/log-collector.mjs.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/dist/PulseWidget.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { PulseWidgetProps } from './types';
|
|
2
|
-
export declare function PulseWidget({ projectId, apiKey, apiUrl, position, accentColor, greeting, placeholder, hideOnPaths, collectEmail, metadata, onOpen, onClose: onCloseProp, onSubmit, }: PulseWidgetProps): import("react/jsx-runtime").JSX.Element | null;
|
|
2
|
+
export declare function PulseWidget({ projectId, apiKey, apiUrl, position, accentColor, greeting, placeholder, hideOnPaths, collectEmail, collectDiagnostics, userId, metadata, onOpen, onClose: onCloseProp, onSubmit, }: PulseWidgetProps): import("react/jsx-runtime").JSX.Element | null;
|
|
3
3
|
//# sourceMappingURL=PulseWidget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PulseWidget.d.ts","sourceRoot":"","sources":["../src/PulseWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"PulseWidget.d.ts","sourceRoot":"","sources":["../src/PulseWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAahD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,MAAM,EACN,MAAwB,EACxB,QAAyB,EACzB,WAAuB,EACvB,QAAmB,EACnB,WAAoC,EACpC,WAAgB,EAChB,YAAmB,EACnB,kBAA0B,EAC1B,MAAM,EACN,QAAa,EACb,MAAM,EACN,OAAO,EAAE,WAAW,EACpB,QAAQ,GACT,EAAE,gBAAgB,kDA0FlB"}
|
package/dist/PulseWidget.mjs
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { lazy, useState, useMemo, useEffect, Suspense } from 'react';
|
|
3
|
+
import { lazy, useState, useMemo, useRef, useEffect, Suspense } from 'react';
|
|
4
4
|
import { getDeviceId } from './lib/device.mjs';
|
|
5
5
|
import { createHttpClient } from './lib/http.mjs';
|
|
6
6
|
import { checkUnreadReplies } from './lib/api.mjs';
|
|
7
|
+
import { LogCollector } from './lib/log-collector.mjs';
|
|
7
8
|
import { TriggerButton } from './components/TriggerButton.mjs';
|
|
8
9
|
|
|
9
10
|
const FeedbackPanel = lazy(() => import('./components/FeedbackPanel.mjs').then((m) => ({ default: m.FeedbackPanel })));
|
|
10
11
|
const DEFAULT_API_URL = 'https://10-pulse.vercel.app';
|
|
11
|
-
function PulseWidget({ projectId, apiKey, apiUrl = DEFAULT_API_URL, position = 'bottom-right', accentColor = '#6366F1', greeting = 'Hi! 👋', placeholder = "What's on your mind?", hideOnPaths = [], collectEmail = true, metadata = {}, onOpen, onClose: onCloseProp, onSubmit, }) {
|
|
12
|
+
function PulseWidget({ projectId, apiKey, apiUrl = DEFAULT_API_URL, position = 'bottom-right', accentColor = '#6366F1', greeting = 'Hi! 👋', placeholder = "What's on your mind?", hideOnPaths = [], collectEmail = true, collectDiagnostics = false, userId, metadata = {}, onOpen, onClose: onCloseProp, onSubmit, }) {
|
|
12
13
|
const [isOpen, setIsOpen] = useState(false);
|
|
13
14
|
const [hasNotification, setHasNotification] = useState(false);
|
|
14
15
|
const [hidden, setHidden] = useState(false);
|
|
@@ -22,7 +23,18 @@ function PulseWidget({ projectId, apiKey, apiUrl = DEFAULT_API_URL, position = '
|
|
|
22
23
|
return null;
|
|
23
24
|
}
|
|
24
25
|
const deviceId = useMemo(() => getDeviceId(), []);
|
|
25
|
-
const client = useMemo(() => createHttpClient(apiUrl, apiKey, deviceId), [apiUrl, apiKey, deviceId]);
|
|
26
|
+
const client = useMemo(() => createHttpClient(apiUrl, apiKey, deviceId, userId), [apiUrl, apiKey, deviceId, userId]);
|
|
27
|
+
// Diagnostics log collector
|
|
28
|
+
const logCollectorRef = useRef(null);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (collectDiagnostics) {
|
|
31
|
+
logCollectorRef.current = new LogCollector();
|
|
32
|
+
}
|
|
33
|
+
return () => {
|
|
34
|
+
logCollectorRef.current?.destroy();
|
|
35
|
+
logCollectorRef.current = null;
|
|
36
|
+
};
|
|
37
|
+
}, [collectDiagnostics]);
|
|
26
38
|
// Check if widget should be hidden on current path
|
|
27
39
|
useEffect(() => {
|
|
28
40
|
if (typeof window === 'undefined')
|
|
@@ -48,7 +60,7 @@ function PulseWidget({ projectId, apiKey, apiUrl = DEFAULT_API_URL, position = '
|
|
|
48
60
|
return (jsxs(Fragment, { children: [!isOpen && (jsx(TriggerButton, { onClick: () => {
|
|
49
61
|
setIsOpen(true);
|
|
50
62
|
onOpen?.();
|
|
51
|
-
}, position: position, accentColor: accentColor, hasNotification: hasNotification })), isOpen && (jsx(Suspense, { fallback: null, children: jsx(FeedbackPanel, { client: client, accentColor: accentColor, greeting: greeting, placeholder: placeholder, collectEmail: collectEmail, metadata: metadata, position: position, onClose: () => {
|
|
63
|
+
}, position: position, accentColor: accentColor, hasNotification: hasNotification })), isOpen && (jsx(Suspense, { fallback: null, children: jsx(FeedbackPanel, { client: client, accentColor: accentColor, greeting: greeting, placeholder: placeholder, collectEmail: collectEmail, logCollectorRef: logCollectorRef, metadata: metadata, position: position, onClose: () => {
|
|
52
64
|
setIsOpen(false);
|
|
53
65
|
setHasNotification(false);
|
|
54
66
|
onCloseProp?.();
|
package/dist/PulseWidget.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PulseWidget.mjs","sources":["../src/PulseWidget.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PulseWidget.mjs","sources":["../src/PulseWidget.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAUA;AAIA;AAEM;;;;;;AAuBF;AACA;;;AAGA;AACA;;AAGF;AACA;;AAMA;;;AAGI;;AAEF;AACE;AACA;AACF;AACF;;;;;AAKE;AACA;AACF;;;AAIE;;;AAEA;AACE;AACA;;;AAEF;;AAEF;AAEA;AAAY;AAEZ;;;AAOQ;;;;;AA6BV;;"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { HttpClient } from '../lib/http';
|
|
3
|
+
import type { LogCollector } from '../lib/log-collector';
|
|
2
4
|
interface FeedbackFormProps {
|
|
3
5
|
client: HttpClient;
|
|
4
6
|
accentColor: string;
|
|
5
7
|
placeholder: string;
|
|
6
8
|
collectEmail: boolean;
|
|
9
|
+
logCollectorRef: React.RefObject<LogCollector | null>;
|
|
7
10
|
metadata: Record<string, unknown>;
|
|
8
11
|
onSubmit?: (threadId: string) => void;
|
|
9
12
|
}
|
|
10
|
-
export declare function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata, onSubmit: onSubmitCallback, }: FeedbackFormProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function FeedbackForm({ client, accentColor, placeholder, collectEmail, logCollectorRef, metadata, onSubmit: onSubmitCallback, }: FeedbackFormProps): import("react/jsx-runtime").JSX.Element;
|
|
11
14
|
export {};
|
|
12
15
|
//# sourceMappingURL=FeedbackForm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackForm.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FeedbackForm.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAWzD,UAAU,iBAAiB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,QAAQ,EAAE,gBAAgB,GAC3B,EAAE,iBAAiB,2CA6JnB"}
|
|
@@ -9,9 +9,8 @@ import { getClipboardImages, ImagePicker } from './ImagePicker.mjs';
|
|
|
9
9
|
import styles from './FeedbackForm.module.css.mjs';
|
|
10
10
|
|
|
11
11
|
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
12
|
-
function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata, onSubmit: onSubmitCallback, }) {
|
|
12
|
+
function FeedbackForm({ client, accentColor, placeholder, collectEmail, logCollectorRef, metadata, onSubmit: onSubmitCallback, }) {
|
|
13
13
|
const [type, setType] = useState(null);
|
|
14
|
-
const [subject, setSubject] = useState('');
|
|
15
14
|
const [body, setBody] = useState('');
|
|
16
15
|
const [email, setEmail] = useState('');
|
|
17
16
|
const [name, setName] = useState('');
|
|
@@ -23,7 +22,7 @@ function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata
|
|
|
23
22
|
const [success, setSuccess] = useState(false);
|
|
24
23
|
const [cooldown, setCooldown] = useState(false);
|
|
25
24
|
const hasEmailError = email.trim() !== '' && !EMAIL_REGEX.test(email.trim());
|
|
26
|
-
const canSubmit = type &&
|
|
25
|
+
const canSubmit = type && body.trim() && !hasEmailError && !submitting && !uploading && !cooldown;
|
|
27
26
|
async function handleSubmit(e) {
|
|
28
27
|
e.preventDefault();
|
|
29
28
|
if (!canSubmit)
|
|
@@ -42,9 +41,9 @@ function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata
|
|
|
42
41
|
}
|
|
43
42
|
setSubmitting(true);
|
|
44
43
|
const ctx = captureContext();
|
|
44
|
+
const diagnostics = logCollectorRef.current?.snapshot();
|
|
45
45
|
const threadId = await submitFeedback(client, {
|
|
46
46
|
type,
|
|
47
|
-
subject: subject.trim(),
|
|
48
47
|
body: body.trim(),
|
|
49
48
|
userEmail: email.trim() || undefined,
|
|
50
49
|
userName: name.trim() || undefined,
|
|
@@ -54,6 +53,7 @@ function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata
|
|
|
54
53
|
appVersion: metadata.appVersion,
|
|
55
54
|
metadata,
|
|
56
55
|
attachments,
|
|
56
|
+
diagnostics,
|
|
57
57
|
});
|
|
58
58
|
setSubmitting(false);
|
|
59
59
|
if (threadId) {
|
|
@@ -68,7 +68,6 @@ function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata
|
|
|
68
68
|
}
|
|
69
69
|
function resetForm() {
|
|
70
70
|
setType(null);
|
|
71
|
-
setSubject('');
|
|
72
71
|
setBody('');
|
|
73
72
|
setEmail('');
|
|
74
73
|
setName('');
|
|
@@ -80,7 +79,7 @@ function FeedbackForm({ client, accentColor, placeholder, collectEmail, metadata
|
|
|
80
79
|
if (success) {
|
|
81
80
|
return jsx(SuccessState, { accentColor: accentColor, onNewFeedback: resetForm });
|
|
82
81
|
}
|
|
83
|
-
return (jsxs("form", { className: styles.form, onSubmit: handleSubmit, children: [jsxs("div", { children: [jsx("label", { className: styles.label, children: "Type" }), jsx(TypeSelector, { value: type, onChange: setType })] }), jsxs("div", { children: [jsx("label", { className: styles.label, children: "
|
|
82
|
+
return (jsxs("form", { className: styles.form, onSubmit: handleSubmit, children: [jsxs("div", { children: [jsx("label", { className: styles.label, children: "Type" }), jsx(TypeSelector, { value: type, onChange: setType })] }), jsxs("div", { children: [jsx("label", { className: styles.label, children: "Message" }), jsx("textarea", { className: styles.textarea, value: body, onChange: (e) => setBody(e.target.value.slice(0, 5000)), onPaste: (e) => {
|
|
84
83
|
const images = getClipboardImages(e);
|
|
85
84
|
if (images.length > 0) {
|
|
86
85
|
setPendingFiles((prev) => [...prev, ...images].slice(0, 3));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackForm.mjs","sources":["../../src/components/FeedbackForm.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"FeedbackForm.mjs","sources":["../../src/components/FeedbackForm.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { HttpClient } from '../lib/http';
|
|
3
|
+
import type { LogCollector } from '../lib/log-collector';
|
|
2
4
|
interface FeedbackPanelProps {
|
|
3
5
|
client: HttpClient;
|
|
4
6
|
accentColor: string;
|
|
5
7
|
greeting: string;
|
|
6
8
|
placeholder: string;
|
|
7
9
|
collectEmail: boolean;
|
|
10
|
+
logCollectorRef: React.RefObject<LogCollector | null>;
|
|
8
11
|
metadata: Record<string, unknown>;
|
|
9
12
|
position: 'bottom-right' | 'bottom-left';
|
|
10
13
|
onClose: () => void;
|
|
11
14
|
onSubmit?: (threadId: string) => void;
|
|
12
15
|
}
|
|
13
|
-
export declare function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, metadata, position, onClose, onSubmit, }: FeedbackPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, logCollectorRef, metadata, position, onClose, onSubmit, }: FeedbackPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
14
17
|
export {};
|
|
15
18
|
//# sourceMappingURL=FeedbackPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackPanel.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FeedbackPanel.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAID,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CAsGpB"}
|
|
@@ -5,7 +5,7 @@ import { ThreadList } from './ThreadList.mjs';
|
|
|
5
5
|
import { ConversationView } from './ConversationView.mjs';
|
|
6
6
|
import styles from './FeedbackPanel.module.css.mjs';
|
|
7
7
|
|
|
8
|
-
function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, metadata, position, onClose, onSubmit, }) {
|
|
8
|
+
function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, logCollectorRef, metadata, position, onClose, onSubmit, }) {
|
|
9
9
|
const [tab, setTab] = useState('new');
|
|
10
10
|
const [selectedThread, setSelectedThread] = useState(null);
|
|
11
11
|
const [isDark, setIsDark] = useState(false);
|
|
@@ -30,7 +30,7 @@ function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmai
|
|
|
30
30
|
return (jsx(ConversationView, { client: client, thread: selectedThread, accentColor: accentColor, onBack: () => setSelectedThread(null) }));
|
|
31
31
|
}
|
|
32
32
|
if (tab === 'new') {
|
|
33
|
-
return (jsx(FeedbackForm, { client: client, accentColor: accentColor, placeholder: placeholder, collectEmail: collectEmail, metadata: metadata, onSubmit: onSubmit }));
|
|
33
|
+
return (jsx(FeedbackForm, { client: client, accentColor: accentColor, placeholder: placeholder, collectEmail: collectEmail, logCollectorRef: logCollectorRef, metadata: metadata, onSubmit: onSubmit }));
|
|
34
34
|
}
|
|
35
35
|
return (jsx(ThreadList, { client: client, onSelectThread: (thread) => setSelectedThread(thread) }));
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackPanel.mjs","sources":["../../src/components/FeedbackPanel.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"FeedbackPanel.mjs","sources":["../../src/components/FeedbackPanel.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/lib/api.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { HttpClient } from './http';
|
|
2
|
-
import type { FeedbackType, Thread, Message, Attachment } from '../types';
|
|
2
|
+
import type { FeedbackType, Thread, Message, Attachment, DiagnosticsSnapshot } from '../types';
|
|
3
3
|
interface SubmitFeedbackParams {
|
|
4
4
|
type: FeedbackType;
|
|
5
|
-
subject
|
|
5
|
+
subject?: string;
|
|
6
6
|
body: string;
|
|
7
7
|
userEmail?: string;
|
|
8
8
|
userName?: string;
|
|
@@ -12,6 +12,7 @@ interface SubmitFeedbackParams {
|
|
|
12
12
|
screenSize?: string;
|
|
13
13
|
metadata?: Record<string, unknown>;
|
|
14
14
|
attachments?: Attachment[];
|
|
15
|
+
diagnostics?: DiagnosticsSnapshot;
|
|
15
16
|
}
|
|
16
17
|
export declare function uploadAttachment(client: HttpClient, file: Blob, filename: string): Promise<Attachment | null>;
|
|
17
18
|
export declare function submitFeedback(client: HttpClient, params: SubmitFeedbackParams): Promise<string | null>;
|
package/dist/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI/F,UAAU,oBAAoB;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAID,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAO5B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB;AAID,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAID,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,EAAE,CAAC,CASpB;AAID,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAID,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,OAAO,CAAC,CASlB"}
|
package/dist/lib/api.mjs
CHANGED
|
@@ -11,7 +11,7 @@ async function uploadAttachment(client, file, filename) {
|
|
|
11
11
|
async function submitFeedback(client, params) {
|
|
12
12
|
const { data, error } = await client.post('/api/v1/feedback', {
|
|
13
13
|
type: params.type,
|
|
14
|
-
subject: params.subject,
|
|
14
|
+
...(params.subject ? { subject: params.subject } : {}),
|
|
15
15
|
body: params.body,
|
|
16
16
|
email: params.userEmail || undefined,
|
|
17
17
|
name: params.userName || undefined,
|
|
@@ -20,6 +20,7 @@ async function submitFeedback(client, params) {
|
|
|
20
20
|
screenSize: params.screenSize || undefined,
|
|
21
21
|
metadata: params.metadata || {},
|
|
22
22
|
attachments: params.attachments || [],
|
|
23
|
+
...(params.diagnostics ? { diagnostics: params.diagnostics } : {}),
|
|
23
24
|
});
|
|
24
25
|
if (error) {
|
|
25
26
|
console.warn('[Pulse] Submit error:', error);
|
package/dist/lib/api.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.mjs","sources":["../../src/lib/api.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;
|
|
1
|
+
{"version":3,"file":"api.mjs","sources":["../../src/lib/api.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/lib/http.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export interface HttpClient {
|
|
|
13
13
|
}>;
|
|
14
14
|
baseUrl: string;
|
|
15
15
|
}
|
|
16
|
-
export declare function createHttpClient(apiUrl: string, apiKey: string, deviceId: string): HttpClient;
|
|
16
|
+
export declare function createHttpClient(apiUrl: string, apiKey: string, deviceId: string, userId?: string): HttpClient;
|
|
17
17
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/lib/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxF,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACzG,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxF,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACzG,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAmE9G"}
|
package/dist/lib/http.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// ── Pulse HTTP Client ──
|
|
2
|
-
function createHttpClient(apiUrl, apiKey, deviceId) {
|
|
2
|
+
function createHttpClient(apiUrl, apiKey, deviceId, userId) {
|
|
3
3
|
const headers = {
|
|
4
4
|
'Content-Type': 'application/json',
|
|
5
5
|
'x-api-key': apiKey,
|
|
6
6
|
'x-device-id': deviceId,
|
|
7
|
+
...(userId ? { 'x-user-id': userId } : {}),
|
|
7
8
|
};
|
|
8
9
|
async function request(path, options) {
|
|
9
10
|
try {
|
|
@@ -25,6 +26,7 @@ function createHttpClient(apiUrl, apiKey, deviceId) {
|
|
|
25
26
|
const authHeaders = {
|
|
26
27
|
'x-api-key': apiKey,
|
|
27
28
|
'x-device-id': deviceId,
|
|
29
|
+
...(userId ? { 'x-user-id': userId } : {}),
|
|
28
30
|
};
|
|
29
31
|
return {
|
|
30
32
|
baseUrl: apiUrl,
|
package/dist/lib/http.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.mjs","sources":["../../src/lib/http.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;
|
|
1
|
+
{"version":3,"file":"http.mjs","sources":["../../src/lib/http.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DiagnosticsSnapshot } from '../types';
|
|
2
|
+
export declare class LogCollector {
|
|
3
|
+
private consoleLogs;
|
|
4
|
+
private errors;
|
|
5
|
+
private failedRequests;
|
|
6
|
+
private origConsole;
|
|
7
|
+
private origFetch;
|
|
8
|
+
private errorHandler;
|
|
9
|
+
private rejectionHandler;
|
|
10
|
+
private destroyed;
|
|
11
|
+
constructor();
|
|
12
|
+
private patchConsole;
|
|
13
|
+
private patchFetch;
|
|
14
|
+
private listenErrors;
|
|
15
|
+
private sanitizeUrl;
|
|
16
|
+
snapshot(): DiagnosticsSnapshot;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=log-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-collector.d.ts","sourceRoot":"","sources":["../../src/lib/log-collector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA+DpD,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,gBAAgB,CAAqD;IAC7E,OAAO,CAAC,SAAS,CAAS;;IAQ1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,WAAW;IAanB,QAAQ,IAAI,mBAAmB;IAiB/B,OAAO,IAAI,IAAI;CAoBhB"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// ── Pulse Diagnostics Log Collector ──
|
|
2
|
+
const MAX_CONSOLE = 50;
|
|
3
|
+
const MAX_ERRORS = 10;
|
|
4
|
+
const MAX_REQUESTS = 20;
|
|
5
|
+
const MAX_SNAPSHOT_BYTES = 100000;
|
|
6
|
+
const MAX_STRING_LENGTH = 500;
|
|
7
|
+
function safeStringify(value, depth = 0) {
|
|
8
|
+
if (depth > 2)
|
|
9
|
+
return '[...]';
|
|
10
|
+
if (value === null)
|
|
11
|
+
return 'null';
|
|
12
|
+
if (value === undefined)
|
|
13
|
+
return 'undefined';
|
|
14
|
+
if (typeof value === 'string') {
|
|
15
|
+
return value.length > MAX_STRING_LENGTH
|
|
16
|
+
? value.slice(0, MAX_STRING_LENGTH) + '…'
|
|
17
|
+
: value;
|
|
18
|
+
}
|
|
19
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
20
|
+
return String(value);
|
|
21
|
+
if (value instanceof Error)
|
|
22
|
+
return `${value.name}: ${value.message}`;
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
return '[' + value.slice(0, 10).map((v) => safeStringify(v, depth + 1)).join(', ') + ']';
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === 'object') {
|
|
27
|
+
try {
|
|
28
|
+
const keys = Object.keys(value).slice(0, 10);
|
|
29
|
+
const pairs = keys.map((k) => `${k}: ${safeStringify(value[k], depth + 1)}`);
|
|
30
|
+
return '{' + pairs.join(', ') + '}';
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return '[Object]';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return String(value);
|
|
37
|
+
}
|
|
38
|
+
function ringPush(buffer, item, max) {
|
|
39
|
+
if (buffer.length >= max)
|
|
40
|
+
buffer.shift();
|
|
41
|
+
buffer.push(item);
|
|
42
|
+
}
|
|
43
|
+
class LogCollector {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.consoleLogs = [];
|
|
46
|
+
this.errors = [];
|
|
47
|
+
this.failedRequests = [];
|
|
48
|
+
this.origConsole = {};
|
|
49
|
+
this.origFetch = null;
|
|
50
|
+
this.errorHandler = null;
|
|
51
|
+
this.rejectionHandler = null;
|
|
52
|
+
this.destroyed = false;
|
|
53
|
+
this.patchConsole();
|
|
54
|
+
this.patchFetch();
|
|
55
|
+
this.listenErrors();
|
|
56
|
+
}
|
|
57
|
+
patchConsole() {
|
|
58
|
+
const levels = ['log', 'warn', 'error', 'info'];
|
|
59
|
+
for (const level of levels) {
|
|
60
|
+
this.origConsole[level] = console[level].bind(console);
|
|
61
|
+
console[level] = (...args) => {
|
|
62
|
+
this.origConsole[level](...args);
|
|
63
|
+
ringPush(this.consoleLogs, {
|
|
64
|
+
level,
|
|
65
|
+
timestamp: Date.now(),
|
|
66
|
+
args: args.map((a) => safeStringify(a)),
|
|
67
|
+
}, MAX_CONSOLE);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
patchFetch() {
|
|
72
|
+
if (typeof window === 'undefined' || !window.fetch)
|
|
73
|
+
return;
|
|
74
|
+
this.origFetch = window.fetch.bind(window);
|
|
75
|
+
const self = this;
|
|
76
|
+
window.fetch = async function (input, init) {
|
|
77
|
+
const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
|
|
78
|
+
const method = init?.method || (input instanceof Request ? input.method : 'GET');
|
|
79
|
+
const start = Date.now();
|
|
80
|
+
try {
|
|
81
|
+
const res = await self.origFetch(input, init);
|
|
82
|
+
if (res.status >= 400) {
|
|
83
|
+
ringPush(self.failedRequests, {
|
|
84
|
+
url: self.sanitizeUrl(url),
|
|
85
|
+
method: method.toUpperCase(),
|
|
86
|
+
status: res.status,
|
|
87
|
+
duration: Date.now() - start,
|
|
88
|
+
timestamp: Date.now(),
|
|
89
|
+
}, MAX_REQUESTS);
|
|
90
|
+
}
|
|
91
|
+
return res;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
ringPush(self.failedRequests, {
|
|
95
|
+
url: self.sanitizeUrl(url),
|
|
96
|
+
method: method.toUpperCase(),
|
|
97
|
+
duration: Date.now() - start,
|
|
98
|
+
error: err instanceof Error ? err.message : 'Network error',
|
|
99
|
+
timestamp: Date.now(),
|
|
100
|
+
}, MAX_REQUESTS);
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
listenErrors() {
|
|
106
|
+
if (typeof window === 'undefined')
|
|
107
|
+
return;
|
|
108
|
+
this.errorHandler = (e) => {
|
|
109
|
+
ringPush(this.errors, {
|
|
110
|
+
message: e.message,
|
|
111
|
+
filename: e.filename,
|
|
112
|
+
lineno: e.lineno,
|
|
113
|
+
colno: e.colno,
|
|
114
|
+
stack: e.error?.stack?.slice(0, 1000),
|
|
115
|
+
timestamp: Date.now(),
|
|
116
|
+
}, MAX_ERRORS);
|
|
117
|
+
};
|
|
118
|
+
this.rejectionHandler = (e) => {
|
|
119
|
+
const reason = e.reason;
|
|
120
|
+
ringPush(this.errors, {
|
|
121
|
+
message: reason instanceof Error ? reason.message : String(reason),
|
|
122
|
+
stack: reason instanceof Error ? reason.stack?.slice(0, 1000) : undefined,
|
|
123
|
+
timestamp: Date.now(),
|
|
124
|
+
}, MAX_ERRORS);
|
|
125
|
+
};
|
|
126
|
+
window.addEventListener('error', this.errorHandler);
|
|
127
|
+
window.addEventListener('unhandledrejection', this.rejectionHandler);
|
|
128
|
+
}
|
|
129
|
+
sanitizeUrl(url) {
|
|
130
|
+
try {
|
|
131
|
+
const u = new URL(url, window.location.origin);
|
|
132
|
+
// Remove auth-related query params
|
|
133
|
+
for (const key of ['token', 'access_token', 'key', 'apiKey', 'api_key']) {
|
|
134
|
+
if (u.searchParams.has(key))
|
|
135
|
+
u.searchParams.set(key, '[REDACTED]');
|
|
136
|
+
}
|
|
137
|
+
return u.toString();
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return url;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
snapshot() {
|
|
144
|
+
const snap = {
|
|
145
|
+
consoleLogs: [...this.consoleLogs],
|
|
146
|
+
errors: [...this.errors],
|
|
147
|
+
failedRequests: [...this.failedRequests],
|
|
148
|
+
};
|
|
149
|
+
// Enforce max size by trimming oldest console logs
|
|
150
|
+
let json = JSON.stringify(snap);
|
|
151
|
+
while (json.length > MAX_SNAPSHOT_BYTES && snap.consoleLogs.length > 0) {
|
|
152
|
+
snap.consoleLogs.shift();
|
|
153
|
+
json = JSON.stringify(snap);
|
|
154
|
+
}
|
|
155
|
+
return snap;
|
|
156
|
+
}
|
|
157
|
+
destroy() {
|
|
158
|
+
if (this.destroyed)
|
|
159
|
+
return;
|
|
160
|
+
this.destroyed = true;
|
|
161
|
+
// Restore console
|
|
162
|
+
for (const [level, fn] of Object.entries(this.origConsole)) {
|
|
163
|
+
console[level] = fn;
|
|
164
|
+
}
|
|
165
|
+
// Restore fetch
|
|
166
|
+
if (this.origFetch && typeof window !== 'undefined') {
|
|
167
|
+
window.fetch = this.origFetch;
|
|
168
|
+
}
|
|
169
|
+
// Remove listeners
|
|
170
|
+
if (typeof window !== 'undefined') {
|
|
171
|
+
if (this.errorHandler)
|
|
172
|
+
window.removeEventListener('error', this.errorHandler);
|
|
173
|
+
if (this.rejectionHandler)
|
|
174
|
+
window.removeEventListener('unhandledrejection', this.rejectionHandler);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export { LogCollector };
|
|
180
|
+
//# sourceMappingURL=log-collector.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-collector.mjs","sources":["../../src/lib/log-collector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface Thread {
|
|
|
5
5
|
id: string;
|
|
6
6
|
projectId: string;
|
|
7
7
|
deviceId: string;
|
|
8
|
+
userId?: string | null;
|
|
8
9
|
type: FeedbackType;
|
|
9
10
|
status: ThreadStatus;
|
|
10
11
|
subject: string;
|
|
@@ -34,6 +35,29 @@ export interface Attachment {
|
|
|
34
35
|
type: string;
|
|
35
36
|
size: number;
|
|
36
37
|
}
|
|
38
|
+
export interface DiagnosticsSnapshot {
|
|
39
|
+
consoleLogs: Array<{
|
|
40
|
+
level: string;
|
|
41
|
+
timestamp: number;
|
|
42
|
+
args: string[];
|
|
43
|
+
}>;
|
|
44
|
+
errors: Array<{
|
|
45
|
+
message: string;
|
|
46
|
+
filename?: string;
|
|
47
|
+
lineno?: number;
|
|
48
|
+
colno?: number;
|
|
49
|
+
stack?: string;
|
|
50
|
+
timestamp: number;
|
|
51
|
+
}>;
|
|
52
|
+
failedRequests: Array<{
|
|
53
|
+
url: string;
|
|
54
|
+
method: string;
|
|
55
|
+
status?: number;
|
|
56
|
+
duration: number;
|
|
57
|
+
error?: string;
|
|
58
|
+
timestamp: number;
|
|
59
|
+
}>;
|
|
60
|
+
}
|
|
37
61
|
export interface PulseWidgetProps {
|
|
38
62
|
projectId: string;
|
|
39
63
|
apiKey: string;
|
|
@@ -44,6 +68,8 @@ export interface PulseWidgetProps {
|
|
|
44
68
|
placeholder?: string;
|
|
45
69
|
hideOnPaths?: string[];
|
|
46
70
|
collectEmail?: boolean;
|
|
71
|
+
collectDiagnostics?: boolean;
|
|
72
|
+
userId?: string;
|
|
47
73
|
metadata?: Record<string, unknown>;
|
|
48
74
|
onOpen?: () => void;
|
|
49
75
|
onClose?: () => void;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEvF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,CAAC;AAEjD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAGD,eAAO,MAAM,cAAc,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAMhG,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AAqEA;AACO,MAAM,cAAc,GAA2E;AACpG,IAAA,EAAE,KAAK,EAAE,KAAK,EAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAO,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,SAAS,EAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAG,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;AACtE,IAAA,EAAE,KAAK,EAAE,QAAQ,EAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAI,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,OAAO,EAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAK,KAAK,EAAE,SAAS,EAAE;;;;;"}
|
package/package.json
CHANGED