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.
@@ -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;AAYhD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,MAAM,EACN,MAAwB,EACxB,QAAyB,EACzB,WAAuB,EACvB,QAAmB,EACnB,WAAoC,EACpC,WAAgB,EAChB,YAAmB,EACnB,QAAa,EACb,MAAM,EACN,OAAO,EAAE,WAAW,EACpB,QAAQ,GACT,EAAE,gBAAgB,kDA6ElB"}
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"}
@@ -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?.();
@@ -1 +1 @@
1
- {"version":3,"file":"PulseWidget.mjs","sources":["../src/PulseWidget.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AASA;AAIA;AAEM;;;;;;AAqBF;AACA;;;AAGA;AACA;;AAGF;;;;;;AASE;AACA;AACF;;;AAIE;;;AAEA;AACE;AACA;;;AAEF;;AAEF;AAEA;AAAY;AAEZ;;;;;;;;AAmCF;;"}
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":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAY9C,UAAU,iBAAiB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,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,QAAQ,EACR,QAAQ,EAAE,gBAAgB,GAC3B,EAAE,iBAAiB,2CA2KnB"}
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 && subject.trim() && body.trim() && !hasEmailError && !submitting && !uploading && !cooldown;
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: "Subject" }), jsx("input", { className: styles.input, type: "text", value: subject, onChange: (e) => setSubject(e.target.value.slice(0, 200)), placeholder: "Brief summary", maxLength: 200 }), jsxs("div", { className: styles.charCount, children: [subject.length, "/200"] })] }), 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) => {
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":"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"}
1
+ {"version":3,"file":"FeedbackForm.mjs","sources":["../../src/components/FeedbackForm.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;AAYA,MAAM,WAAW,GAAG,4BAA4B;SAYhC,YAAY,CAAC,EAC3B,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,QAAQ,EAAE,gBAAgB,GACR,EAAA;IAClB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC;IAC3D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC;IAC5D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACjE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAE/C,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;IAEjG,eAAe,YAAY,CAAC,CAAkB,EAAA;QAC5C,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,QAAQ,CAAC,IAAI,CAAC;;QAGd,IAAI,WAAW,GAAiB,EAAE;AAClC,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,KAAI;AAC9B,gBAAA,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;gBAC5C,OAAO,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;YACxD,CAAC,CAAC,CACH;YACD,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAsB,CAAC,KAAK,IAAI,CAAC;QAClE;QAEA,aAAa,CAAC,IAAI,CAAC;AAEnB,QAAA,MAAM,GAAG,GAAG,cAAc,EAAE;QAC5B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE;AACvD,QAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE;YAC5C,IAAI;AACJ,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS;AACpC,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS;YAClC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU,EAAE,QAAQ,CAAC,UAAgC;YACrD,QAAQ;YACR,WAAW;YACX,WAAW;AACZ,SAAA,CAAC;QAEF,aAAa,CAAC,KAAK,CAAC;QAEpB,IAAI,QAAQ,EAAE;YACZ,UAAU,CAAC,IAAI,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC;YACjB,UAAU,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAC3C,YAAA,gBAAgB,GAAG,QAAQ,CAAC;QAC9B;aAAO;YACL,QAAQ,CAAC,mCAAmC,CAAC;QAC/C;IACF;AAEA,IAAA,SAAS,SAAS,GAAA;QAChB,OAAO,CAAC,IAAI,CAAC;QACb,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC;QACd,aAAa,CAAC,IAAI,CAAC;QACnB,eAAe,CAAC,EAAE,CAAC;QACnB,UAAU,CAAC,KAAK,CAAC;IACnB;IAEA,IAAI,OAAO,EAAE;QACX,OAAOA,GAAA,CAAC,YAAY,EAAA,EAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAA,CAAI;IAC7E;AAEA,IAAA,QACEC,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAA,QAAA,EAAA,CAClDA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACED,eAAO,SAAS,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAC5CA,IAAC,YAAY,EAAA,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAA,CAAI,IAC5C,EAENC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACED,eAAO,SAAS,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,CAAiB,EAC/CA,kBACE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAC1B,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACvD,OAAO,EAAE,CAAC,CAAC,KAAI;AACb,4BAAA,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC;AACpC,4BAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gCACrB,eAAe,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC7D;wBACF,CAAC,EACD,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,IAAI,EAAA,CACf,EACFC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA,QAAA,EAAA,CAAG,IAAI,CAAC,MAAM,EAAA,OAAA,CAAA,EAAA,CAAY,CAAA,EAAA,CACtD,EAEND,GAAA,CAAC,WAAW,EAAA,EACV,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtF,QAAQ,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAC9E,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAA,CACjC,EAED,YAAY,KACXC,cAAK,SAAS,EAAE,MAAM,CAAC,GAAG,aACxBA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACED,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAyB,EACvDA,eACE,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,WAAW,EAAC,WAAW,EAAA,CACvB,CAAA,EAAA,CACE,EACNC,yBACED,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,CAA0B,EACxDA,GAAA,CAAA,OAAA,EAAA,EACE,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACnE,MAAM,EAAE,MAAK;AACX,oCAAA,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;wCACnD,aAAa,CAAC,4BAA4B,CAAC;oCAC7C;AACF,gCAAA,CAAC,EACD,WAAW,EAAC,iBAAiB,EAAA,CAC7B,EACD,UAAU,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,MAAM,CAAC,UAAU,EAAA,QAAA,EAAG,UAAU,EAAA,CAAK,CAAA,EAAA,CAC5D,CAAA,EAAA,CACF,CACP,EAEA,KAAK,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAAG,KAAK,EAAA,CAAK,EAEjDA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,KAAK,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,EACvC,QAAQ,EAAE,CAAC,SAAS,EAAA,QAAA,EAEnB,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,EAAA,CAClE,CAAA,EAAA,CACJ;AAEX;;;;"}
@@ -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":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9C,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,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,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CAqGpB"}
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":"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"}
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
@@ -1,3 +1,3 @@
1
1
  export { PulseWidget } from './PulseWidget';
2
- export type { PulseWidgetProps, FeedbackType, ThreadStatus } from './types';
2
+ export type { PulseWidgetProps, FeedbackType, ThreadStatus, DiagnosticsSnapshot } from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -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: string;
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>;
@@ -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;AAI1E,UAAU,oBAAoB;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,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;CAC5B;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,CAoBxB;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"}
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);
@@ -1 +1 @@
1
- {"version":3,"file":"api.mjs","sources":["../../src/lib/api.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AAqBA;AAEO,eAAe,gBAAgB,CACpC,MAAkB,EAClB,IAAU,EACV,QAAgB,EAAA;AAEhB,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAa,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC;IACzF,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC;AAC5C,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,IAAI;AACb;AAEO,eAAe,cAAc,CAClC,MAAkB,EAClB,MAA4B,EAAA;AAE5B,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAuB,kBAAkB,EAAE;QAClF,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,QAAA,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;AACpC,QAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;AAClC,QAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;AACpC,QAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;AACxC,QAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;AAC1C,QAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;AAC/B,QAAA,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;AACtC,KAAA,CAAC;IAEF,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC;AAC5C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,IAAI,EAAE,QAAQ,IAAI,IAAI;AAC/B;AAEA;AAEO,eAAe,YAAY,CAChC,MAAkB,EAAA;AAElB,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAW,iBAAiB,CAAC;IAErE,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC;AACnD,QAAA,OAAO,EAAE;IACX;IAEA,OAAO,IAAI,IAAI,EAAE;AACnB;AAEA;AAEO,eAAe,iBAAiB,CACrC,MAAkB,EAClB,QAAgB,EAAA;AAEhB,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAY,CAAA,gBAAA,EAAmB,QAAQ,CAAA,SAAA,CAAW,CAAC;IAE3F,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC;AACpD,QAAA,OAAO,EAAE;IACX;IAEA,OAAO,IAAI,IAAI,EAAE;AACnB;AAEA;AAEO,eAAe,aAAa,CACjC,MAAkB,EAClB,QAAgB,EAChB,IAAY,EACZ,WAA0B,EAAA;AAE1B,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA,gBAAA,EAAmB,QAAQ,CAAA,MAAA,CAAQ,EAAE;QACvE,IAAI;QACJ,WAAW,EAAE,WAAW,IAAI,EAAE;AAC/B,KAAA,CAAC;IAEF,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC3C,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;AAEA;AAEO,eAAe,kBAAkB,CACtC,MAAkB,EAAA;AAElB,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAyB,gBAAgB,CAAC;IAElF,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC;AAClD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI,EAAE,SAAS,IAAI,KAAK;AACjC;;;;"}
1
+ {"version":3,"file":"api.mjs","sources":["../../src/lib/api.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -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
@@ -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,CAiE7F"}
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,
@@ -1 +1 @@
1
- {"version":3,"file":"http.mjs","sources":["../../src/lib/http.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;SASgB,gBAAgB,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAA;AAC/E,IAAA,MAAM,OAAO,GAA2B;AACtC,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,aAAa,EAAE,QAAQ;KACxB;AAED,IAAA,eAAe,OAAO,CAAI,IAAY,EAAE,OAAqB,EAAA;AAC3D,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE;AAC1C,gBAAA,GAAG,OAAO;gBACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE;AAC7C,aAAA,CAAC;AAEF,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AAE7B,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,gBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA,KAAA,EAAQ,GAAG,CAAC,MAAM,CAAA,CAAE,EAAE;YAClE;YAEA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAS,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9C;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;QAC/C;IACF;AAEA,IAAA,MAAM,WAAW,GAA2B;AAC1C,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,aAAa,EAAE,QAAQ;KACxB;IAED,OAAO;AACL,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,GAAG,CAAI,IAAY,EAAA;AACjB,YAAA,OAAO,OAAO,CAAI,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,CAAI,IAAY,EAAE,IAAa,EAAA;YACjC,OAAO,OAAO,CAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC3B,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,MAAM,MAAM,CAAI,IAAY,EAAE,IAAU,EAAE,QAAgB,EAAA;AACxD,YAAA,IAAI;AACF,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;gBAEvC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE;AAC1C,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,IAAI,EAAE,QAAQ;AACf,iBAAA,CAAC;AAEF,gBAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AAC7B,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA,KAAA,EAAQ,GAAG,CAAC,MAAM,CAAA,CAAE,EAAE;gBAClE;gBACA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAS,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC;gBAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;YAC/C;QACF,CAAC;KACF;AACH;;;;"}
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":"AAAA;AA4BA,MAAM,WAAW,GAAG,EAAE;AACtB,MAAM,UAAU,GAAG,EAAE;AACrB,MAAM,YAAY,GAAG,EAAE;AACvB,MAAM,kBAAkB,GAAG,MAAO;AAClC,MAAM,iBAAiB,GAAG,GAAG;AAE7B,SAAS,aAAa,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC,EAAA;IAC9C,IAAI,KAAK,GAAG,CAAC;AAAE,QAAA,OAAO,OAAO;IAC7B,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,MAAM;IACjC,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,WAAW;AAC3C,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG;cAClB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG;cACpC,KAAK;IACX;IACA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACjF,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,CAAA,EAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAA,CAAE;AACpE,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;IAC1F;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,aAAa,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA,CAAE,CAAC;YACzG,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;QACrC;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,UAAU;QACnB;IACF;AACA,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;AAEA,SAAS,QAAQ,CAAI,MAAW,EAAE,IAAO,EAAE,GAAW,EAAA;AACpD,IAAA,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;QAAE,MAAM,CAAC,KAAK,EAAE;AACxC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB;MAEa,YAAY,CAAA;AAWvB,IAAA,WAAA,GAAA;QAVQ,IAAA,CAAA,WAAW,GAAmB,EAAE;QAChC,IAAA,CAAA,MAAM,GAAiB,EAAE;QACzB,IAAA,CAAA,cAAc,GAAyB,EAAE;QAEzC,IAAA,CAAA,WAAW,GAAiD,EAAE;QAC9D,IAAA,CAAA,SAAS,GAAwB,IAAI;QACrC,IAAA,CAAA,YAAY,GAAqC,IAAI;QACrD,IAAA,CAAA,gBAAgB,GAAgD,IAAI;QACpE,IAAA,CAAA,SAAS,GAAG,KAAK;QAGvB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,YAAY,EAAE;IACrB;IAEQ,YAAY,GAAA;QAClB,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU;AACxD,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACrD,OAAmE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAe,KAAI;gBACnG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;AAChC,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBACzB,KAAK;AACL,oBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACrB,oBAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;iBACxC,EAAE,WAAW,CAAC;AACjB,YAAA,CAAC;QACH;IACF;IAEQ,UAAU,GAAA;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE;QACpD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI;AAEjB,QAAA,MAAM,CAAC,KAAK,GAAG,gBAAgB,KAAwB,EAAE,IAAkB,EAAA;AACzE,YAAA,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,YAAY,GAAG,GAAG,KAAK,CAAC,IAAI,GAAI,KAAiB,CAAC,GAAG;YAC1G,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,KAAK,KAAK,YAAY,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AAChF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAExB,YAAA,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9C,gBAAA,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;AACrB,oBAAA,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE;AAC5B,wBAAA,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1B,wBAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;wBAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,wBAAA,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5B,wBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACtB,EAAE,YAAY,CAAC;gBAClB;AACA,gBAAA,OAAO,GAAG;YACZ;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE;AAC5B,oBAAA,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1B,oBAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AAC5B,oBAAA,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5B,oBAAA,KAAK,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,eAAe;AAC3D,oBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,EAAE,YAAY,CAAC;AAChB,gBAAA,MAAM,GAAG;YACX;AACF,QAAA,CAAC;IACH;IAEQ,YAAY,GAAA;QAClB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAEnC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAa,KAAI;AACpC,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AACrC,gBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,EAAE,UAAU,CAAC;AAChB,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAwB,KAAI;AACnD,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;AACvB,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,gBAAA,OAAO,EAAE,MAAM,YAAY,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;gBAClE,KAAK,EAAE,MAAM,YAAY,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,SAAS;AACzE,gBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,EAAE,UAAU,CAAC;AAChB,QAAA,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC;IACtE;AAEQ,IAAA,WAAW,CAAC,GAAW,EAAA;AAC7B,QAAA,IAAI;AACF,YAAA,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;;AAE9C,YAAA,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;AACvE,gBAAA,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC;YACpE;AACA,YAAA,OAAO,CAAC,CAAC,QAAQ,EAAE;QACrB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,GAAG;QACZ;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAwB;AAChC,YAAA,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,YAAA,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,YAAA,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;SACzC;;QAGD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,kBAAkB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,SAAS;YAAE;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAGrB,QAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACzD,YAAA,OAAmE,CAAC,KAAK,CAAC,GAAG,EAAE;QAClF;;QAGA,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACnD,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;QAC/B;;AAGA,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,IAAI,CAAC,YAAY;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;YAC7E,IAAI,IAAI,CAAC,gBAAgB;gBAAE,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACpG;IACF;AACD;;;;"}
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;
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AA4DA;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;;;;;"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-feedback-widget",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Drop-in feedback widget for React apps. Collect bugs, features, questions, and praise from users.",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",