pulse-feedback-widget 3.0.0 → 3.1.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.mjs
CHANGED
|
@@ -9,7 +9,7 @@ import { LogCollector } from './lib/log-collector.mjs';
|
|
|
9
9
|
import { TriggerButton } from './components/TriggerButton.mjs';
|
|
10
10
|
|
|
11
11
|
const FeedbackPanel = lazy(() => import('./components/FeedbackPanel.mjs').then((m) => ({ default: m.FeedbackPanel })));
|
|
12
|
-
const DEFAULT_API_URL = 'https://
|
|
12
|
+
const DEFAULT_API_URL = 'https://pulseaq.com';
|
|
13
13
|
const PulseWidget = forwardRef(function PulseWidget({ apiKey, apiUrl = DEFAULT_API_URL, position = 'bottom-right', offset, hideDefaultLauncher = false, accentColor = '#6366F1', greeting = 'Hi! \u{1F44B}', placeholder = "What's on your mind?", hideOnPaths = [], collectEmail = true, collectDiagnostics = false, locale, userId, metadata = {}, onOpen, onClose: onCloseProp, onSubmit, }, ref) {
|
|
14
14
|
const [isOpen, setIsOpen] = useState(false);
|
|
15
15
|
const [hasNotification, setHasNotification] = useState(false);
|
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;
|
|
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;AA2BD,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,4 +1,29 @@
|
|
|
1
1
|
// ── Pulse HTTP Client ──
|
|
2
|
+
const MAX_RETRIES = 2;
|
|
3
|
+
const TIMEOUT_MS = 10000;
|
|
4
|
+
async function fetchWithRetry(url, options) {
|
|
5
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
6
|
+
const controller = new AbortController();
|
|
7
|
+
const timeoutId = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
8
|
+
try {
|
|
9
|
+
const res = await fetch(url, { ...options, signal: controller.signal });
|
|
10
|
+
clearTimeout(timeoutId);
|
|
11
|
+
// Retry on server errors, not client errors
|
|
12
|
+
if (res.status >= 500 && attempt < MAX_RETRIES) {
|
|
13
|
+
await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, attempt)));
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
return res;
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
clearTimeout(timeoutId);
|
|
20
|
+
if (attempt === MAX_RETRIES)
|
|
21
|
+
throw err;
|
|
22
|
+
await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, attempt)));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
throw new Error('Max retries exceeded');
|
|
26
|
+
}
|
|
2
27
|
function createHttpClient(apiUrl, apiKey, deviceId, userId) {
|
|
3
28
|
const headers = {
|
|
4
29
|
'Content-Type': 'application/json',
|
|
@@ -8,7 +33,7 @@ function createHttpClient(apiUrl, apiKey, deviceId, userId) {
|
|
|
8
33
|
};
|
|
9
34
|
async function request(path, options) {
|
|
10
35
|
try {
|
|
11
|
-
const res = await
|
|
36
|
+
const res = await fetchWithRetry(`${apiUrl}${path}`, {
|
|
12
37
|
...options,
|
|
13
38
|
headers: { ...headers, ...options?.headers },
|
|
14
39
|
});
|
|
@@ -43,7 +68,7 @@ function createHttpClient(apiUrl, apiKey, deviceId, userId) {
|
|
|
43
68
|
try {
|
|
44
69
|
const formData = new FormData();
|
|
45
70
|
formData.append('file', file, filename);
|
|
46
|
-
const res = await
|
|
71
|
+
const res = await fetchWithRetry(`${apiUrl}${path}`, {
|
|
47
72
|
method: 'POST',
|
|
48
73
|
headers: authHeaders,
|
|
49
74
|
body: formData,
|
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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"}
|