blocfeed 0.20.0 → 0.22.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/CHANGELOG.md +75 -0
- package/dist/{chunk-X4ON6DOW.cjs → chunk-WAMNK7BQ.cjs} +3 -3
- package/dist/{chunk-VWILLYYY.js → chunk-XF3APCYE.js} +3 -3
- package/dist/{controller-DrQ--KwA.d.cts → controller-BPGXlZKD.d.cts} +1 -1
- package/dist/{controller-DrQ--KwA.d.ts → controller-BPGXlZKD.d.ts} +1 -1
- package/dist/engine.cjs +1 -1
- package/dist/engine.d.cts +2 -2
- package/dist/engine.d.ts +2 -2
- package/dist/engine.js +1 -1
- package/dist/main.cjs +1 -1
- package/dist/main.d.cts +10 -3
- package/dist/main.d.ts +10 -3
- package/dist/main.js +1 -1
- package/dist/passive.cjs +1 -0
- package/dist/passive.d.cts +62 -0
- package/dist/passive.d.ts +62 -0
- package/dist/passive.js +1 -0
- package/dist/script.js +71 -0
- package/package.json +9 -1
package/dist/engine.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
1
|
+
import {a}from'./chunk-XF3APCYE.js';export{j as clearClickEvents,z as clearDiagnostics,g as clearQueue,C as clearSecurityFindings,d as collectMetadata,u as createBlocFeedController,b as createHtmlToImageAdapter,f as dequeueAll,i as drainClickEvents,y as drainDiagnostics,e as enqueue,p as getMyFeedbackUrl,h as getQueueSize,B as getSecurityFindings,o as getViewerToken,w as installDiagnostics,k as isRecordingSupported,m as isVoiceSupported,c as runCapture,A as runSecretScan,l as startRecording,n as startVoiceRecording,q as transcribeAudio,x as uninstallDiagnostics}from'./chunk-XF3APCYE.js';function s(o){if(o?.aborted)throw new Error("Aborted")}async function v(o){return await new Promise((t,e)=>{let r=new Image;r.onload=()=>t({width:r.naturalWidth,height:r.naturalHeight}),r.onerror=()=>e(new Error("Failed to load generated screenshot")),r.src=o;})}async function l(o,t){let{width:e,height:r}=await v(o);return {dataUrl:o,mime:t,width:e,height:r}}function U(o){return {async captureElement(t,e){if(!a())throw new Error("captureElement can only run in the browser");s(e.signal);let r={scale:e.pixelRatio},n=e.mime==="image/jpeg"?await o.domToJpeg(t,{...r,quality:e.quality??.92}):await o.domToPng(t,r);return s(e.signal),await l(n,e.mime)},async captureFullPage(t){if(!a())throw new Error("captureFullPage can only run in the browser");s(t.signal);let e=document.documentElement,r=Math.max(e.scrollWidth,e.clientWidth),n=Math.max(e.scrollHeight,e.clientHeight),i=Math.min(1,t.maxDimension/Math.max(r,n)),c={width:Math.max(1,Math.round(r*i)),height:Math.max(1,Math.round(n*i)),scale:t.pixelRatio},a$1=t.mime==="image/jpeg"?await o.domToJpeg(e,{...c,quality:t.quality??.92}):await o.domToPng(e,c);return s(t.signal),await l(a$1,t.mime)}}}function O(o){let[t,e]=o.split(",",2);if(!t||!e)throw new Error("Invalid data URL");let n=/data:(.*?);base64/.exec(t)?.[1]||"application/octet-stream",i=atob(e),c=new Uint8Array(i.length);for(let a=0;a<i.length;a+=1)c[a]=i.charCodeAt(a);return new Blob([c],{type:n})}export{U as createModernScreenshotAdapter,O as dataUrlToBlob};
|
package/dist/main.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var chunkWAMNK7BQ_cjs=require('./chunk-WAMNK7BQ.cjs');Object.defineProperty(exports,"BehavioralTracker",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.t}});Object.defineProperty(exports,"BlocFeed",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.G}});Object.defineProperty(exports,"BlocFeedProvider",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.v}});Object.defineProperty(exports,"BlocFeedWidget",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.E}});Object.defineProperty(exports,"SDK_VERSION",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.F}});Object.defineProperty(exports,"track",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.s}});Object.defineProperty(exports,"useBlocFeed",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.D}});
|
package/dist/main.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { g as BlocFeedConfig, j as BlocFeedHandle, k as BlocFeedState, h as BlocFeedController, C as CaptureConfig, o as FeedbackCategory, w as SubmitResult, K as BehavioralEvent, J as BehavioralConfig } from './controller-BPGXlZKD.cjs';
|
|
2
|
+
export { L as BehavioralEventType, i as BlocFeedError, l as BlocFeedStrings, B as BlocFeedUser, O as CaptureDiagnostics, a as CaptureResult, m as ConsoleEntry, D as DiagnosticsConfig, E as ElementDescriptor, n as FeedbackApiResponse, F as FeedbackPayload, I as ImageAsset, P as MaybePromise, M as MetadataConfig, d as MetadataContext, N as NetworkEntry, Q as PickerConfig, R as RecordingConfig, p as Rect, S as ScreenshotAdapter, q as ScreenshotAdapterOptions, r as ScreenshotIntent, s as ScreenshotMime, f as SecurityConfig, t as SecurityFinding, e as SecuritySnapshot, u as SessionPhase, T as ThemeConfig, x as TransportConfig, U as TransportResult, y as TriggerStyle, V as VideoAsset, z as VideoIntent, A as VideoMime, c as VoiceConfig, W as WidgetPosition } from './controller-BPGXlZKD.cjs';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode } from 'react';
|
|
@@ -72,6 +72,13 @@ interface TrackerOpts {
|
|
|
72
72
|
config?: BehavioralConfig;
|
|
73
73
|
submitter?: Submitter;
|
|
74
74
|
passiveSampler?: () => boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Extra strings appended to the heartbeat `sdk_features` array. Used by
|
|
77
|
+
* non-React entry points (e.g. the IIFE script-tag bundle) to mark the
|
|
78
|
+
* install method on the dashboard side. Purely additive — does not alter
|
|
79
|
+
* detector or replay behaviour.
|
|
80
|
+
*/
|
|
81
|
+
extraSdkFeatures?: string[];
|
|
75
82
|
}
|
|
76
83
|
declare class BehavioralTracker {
|
|
77
84
|
private readonly opts;
|
|
@@ -103,7 +110,7 @@ declare function track(name: string, properties?: TrackProperties, options?: Tra
|
|
|
103
110
|
* Pinned at publish time. Sent with the heartbeat so the dashboard can
|
|
104
111
|
* surface SDK version drift to customers.
|
|
105
112
|
*/
|
|
106
|
-
declare const SDK_VERSION = "0.
|
|
113
|
+
declare const SDK_VERSION = "0.22.0";
|
|
107
114
|
|
|
108
115
|
/**
|
|
109
116
|
* Non-React entry point. Mirrors the shape of the rest of the SDK exports;
|
package/dist/main.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { g as BlocFeedConfig, j as BlocFeedHandle, k as BlocFeedState, h as BlocFeedController, C as CaptureConfig, o as FeedbackCategory, w as SubmitResult, K as BehavioralEvent, J as BehavioralConfig } from './controller-BPGXlZKD.js';
|
|
2
|
+
export { L as BehavioralEventType, i as BlocFeedError, l as BlocFeedStrings, B as BlocFeedUser, O as CaptureDiagnostics, a as CaptureResult, m as ConsoleEntry, D as DiagnosticsConfig, E as ElementDescriptor, n as FeedbackApiResponse, F as FeedbackPayload, I as ImageAsset, P as MaybePromise, M as MetadataConfig, d as MetadataContext, N as NetworkEntry, Q as PickerConfig, R as RecordingConfig, p as Rect, S as ScreenshotAdapter, q as ScreenshotAdapterOptions, r as ScreenshotIntent, s as ScreenshotMime, f as SecurityConfig, t as SecurityFinding, e as SecuritySnapshot, u as SessionPhase, T as ThemeConfig, x as TransportConfig, U as TransportResult, y as TriggerStyle, V as VideoAsset, z as VideoIntent, A as VideoMime, c as VoiceConfig, W as WidgetPosition } from './controller-BPGXlZKD.js';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode } from 'react';
|
|
@@ -72,6 +72,13 @@ interface TrackerOpts {
|
|
|
72
72
|
config?: BehavioralConfig;
|
|
73
73
|
submitter?: Submitter;
|
|
74
74
|
passiveSampler?: () => boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Extra strings appended to the heartbeat `sdk_features` array. Used by
|
|
77
|
+
* non-React entry points (e.g. the IIFE script-tag bundle) to mark the
|
|
78
|
+
* install method on the dashboard side. Purely additive — does not alter
|
|
79
|
+
* detector or replay behaviour.
|
|
80
|
+
*/
|
|
81
|
+
extraSdkFeatures?: string[];
|
|
75
82
|
}
|
|
76
83
|
declare class BehavioralTracker {
|
|
77
84
|
private readonly opts;
|
|
@@ -103,7 +110,7 @@ declare function track(name: string, properties?: TrackProperties, options?: Tra
|
|
|
103
110
|
* Pinned at publish time. Sent with the heartbeat so the dashboard can
|
|
104
111
|
* surface SDK version drift to customers.
|
|
105
112
|
*/
|
|
106
|
-
declare const SDK_VERSION = "0.
|
|
113
|
+
declare const SDK_VERSION = "0.22.0";
|
|
107
114
|
|
|
108
115
|
/**
|
|
109
116
|
* Non-React entry point. Mirrors the shape of the rest of the SDK exports;
|
package/dist/main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{
|
|
2
|
+
export{t as BehavioralTracker,G as BlocFeed,v as BlocFeedProvider,E as BlocFeedWidget,F as SDK_VERSION,s as track,D as useBlocFeed}from'./chunk-XF3APCYE.js';
|
package/dist/passive.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkWAMNK7BQ_cjs=require('./chunk-WAMNK7BQ.cjs'),react=require('react');function a(e){e.user?.id&&chunkWAMNK7BQ_cjs.r(e.user.id);let i=new chunkWAMNK7BQ_cjs.t({blocfeedId:e.blocfeed_id,...e.config!==void 0?{config:e.config}:{},...e.extraSdkFeatures!==void 0?{extraSdkFeatures:e.extraSdkFeatures}:{}});return i.install(),i}function u(e){return react.useEffect(()=>{let i=a({blocfeed_id:e.blocfeed_id,...e.user!==void 0?{user:e.user}:{},...e.config!==void 0?{config:e.config}:{}});return ()=>{i.uninstall();}},[e.blocfeed_id]),null}var r=null,g={init(e){r||(r=a(e));},identify(e,i){chunkWAMNK7BQ_cjs.r(e);},track(e,i){chunkWAMNK7BQ_cjs.s(e,i);},uninstall(){r&&(r.uninstall(),r=null);}};function v(){return r}function k(){r&&(r.uninstall(),r=null);}Object.defineProperty(exports,"SDK_VERSION",{enumerable:true,get:function(){return chunkWAMNK7BQ_cjs.F}});exports.BlocFeed=g;exports.BlocFeedPassive=u;exports.__getStandaloneTrackerForTesting=v;exports.__resetStandaloneTrackerForTesting=k;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { TrackProperties, BehavioralTracker } from './main.cjs';
|
|
2
|
+
export { SDK_VERSION } from './main.cjs';
|
|
3
|
+
import { B as BlocFeedUser, J as BehavioralConfig } from './controller-BPGXlZKD.cjs';
|
|
4
|
+
export { K as BehavioralEvent } from './controller-BPGXlZKD.cjs';
|
|
5
|
+
import 'react/jsx-runtime';
|
|
6
|
+
import 'react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* blocfeed/passive — tracking-only entry point.
|
|
10
|
+
*
|
|
11
|
+
* Skips the entire React feedback panel (`BlocFeedWidget`, framer-motion,
|
|
12
|
+
* triggers, picker UI). Use this when you only want session replay +
|
|
13
|
+
* behavioral signals + custom events.
|
|
14
|
+
*
|
|
15
|
+
* Two ways to install:
|
|
16
|
+
*
|
|
17
|
+
* 1. React: <BlocFeedPassive blocfeed_id="bf_xxx" /> — returns null,
|
|
18
|
+
* installs a `BehavioralTracker` on mount, uninstalls on unmount.
|
|
19
|
+
*
|
|
20
|
+
* 2. Vanilla: BlocFeed.init({ blocfeed_id, user, config }) — same tracker
|
|
21
|
+
* with no React dependency. Singleton; calling init() twice is a no-op.
|
|
22
|
+
*
|
|
23
|
+
* IMPORTANT: this file deliberately does NOT import from react/BlocFeedWidget
|
|
24
|
+
* or react/triggers — that would defeat tree-shaking for customers who only
|
|
25
|
+
* import `blocfeed/passive`.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
interface BlocFeedPassiveProps {
|
|
29
|
+
blocfeed_id: string;
|
|
30
|
+
user?: BlocFeedUser;
|
|
31
|
+
config?: BehavioralConfig;
|
|
32
|
+
}
|
|
33
|
+
declare function BlocFeedPassive(props: BlocFeedPassiveProps): null;
|
|
34
|
+
interface BlocFeedInitOpts {
|
|
35
|
+
blocfeed_id: string;
|
|
36
|
+
user?: BlocFeedUser;
|
|
37
|
+
config?: BehavioralConfig;
|
|
38
|
+
/** @internal */
|
|
39
|
+
extraSdkFeatures?: string[];
|
|
40
|
+
}
|
|
41
|
+
declare const BlocFeed: {
|
|
42
|
+
/**
|
|
43
|
+
* Install the tracker. Idempotent — subsequent calls are a no-op until
|
|
44
|
+
* `uninstall()` runs.
|
|
45
|
+
*/
|
|
46
|
+
init(opts: BlocFeedInitOpts): void;
|
|
47
|
+
/**
|
|
48
|
+
* Attach a `user_id` to subsequent `track()` calls. Pass `undefined` to
|
|
49
|
+
* clear. `traits` is reserved for future use; currently ignored.
|
|
50
|
+
*/
|
|
51
|
+
identify(userId: string, _traits?: Record<string, unknown>): void;
|
|
52
|
+
/** Send a custom event. See `track()` for validation rules. */
|
|
53
|
+
track(name: string, properties?: TrackProperties): void;
|
|
54
|
+
/** Tear down the standalone tracker. Safe to call when not installed. */
|
|
55
|
+
uninstall(): void;
|
|
56
|
+
};
|
|
57
|
+
/** @internal */
|
|
58
|
+
declare function __getStandaloneTrackerForTesting(): BehavioralTracker | null;
|
|
59
|
+
/** @internal */
|
|
60
|
+
declare function __resetStandaloneTrackerForTesting(): void;
|
|
61
|
+
|
|
62
|
+
export { BehavioralConfig, BlocFeed, type BlocFeedInitOpts, BlocFeedPassive, type BlocFeedPassiveProps, __getStandaloneTrackerForTesting, __resetStandaloneTrackerForTesting };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { TrackProperties, BehavioralTracker } from './main.js';
|
|
2
|
+
export { SDK_VERSION } from './main.js';
|
|
3
|
+
import { B as BlocFeedUser, J as BehavioralConfig } from './controller-BPGXlZKD.js';
|
|
4
|
+
export { K as BehavioralEvent } from './controller-BPGXlZKD.js';
|
|
5
|
+
import 'react/jsx-runtime';
|
|
6
|
+
import 'react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* blocfeed/passive — tracking-only entry point.
|
|
10
|
+
*
|
|
11
|
+
* Skips the entire React feedback panel (`BlocFeedWidget`, framer-motion,
|
|
12
|
+
* triggers, picker UI). Use this when you only want session replay +
|
|
13
|
+
* behavioral signals + custom events.
|
|
14
|
+
*
|
|
15
|
+
* Two ways to install:
|
|
16
|
+
*
|
|
17
|
+
* 1. React: <BlocFeedPassive blocfeed_id="bf_xxx" /> — returns null,
|
|
18
|
+
* installs a `BehavioralTracker` on mount, uninstalls on unmount.
|
|
19
|
+
*
|
|
20
|
+
* 2. Vanilla: BlocFeed.init({ blocfeed_id, user, config }) — same tracker
|
|
21
|
+
* with no React dependency. Singleton; calling init() twice is a no-op.
|
|
22
|
+
*
|
|
23
|
+
* IMPORTANT: this file deliberately does NOT import from react/BlocFeedWidget
|
|
24
|
+
* or react/triggers — that would defeat tree-shaking for customers who only
|
|
25
|
+
* import `blocfeed/passive`.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
interface BlocFeedPassiveProps {
|
|
29
|
+
blocfeed_id: string;
|
|
30
|
+
user?: BlocFeedUser;
|
|
31
|
+
config?: BehavioralConfig;
|
|
32
|
+
}
|
|
33
|
+
declare function BlocFeedPassive(props: BlocFeedPassiveProps): null;
|
|
34
|
+
interface BlocFeedInitOpts {
|
|
35
|
+
blocfeed_id: string;
|
|
36
|
+
user?: BlocFeedUser;
|
|
37
|
+
config?: BehavioralConfig;
|
|
38
|
+
/** @internal */
|
|
39
|
+
extraSdkFeatures?: string[];
|
|
40
|
+
}
|
|
41
|
+
declare const BlocFeed: {
|
|
42
|
+
/**
|
|
43
|
+
* Install the tracker. Idempotent — subsequent calls are a no-op until
|
|
44
|
+
* `uninstall()` runs.
|
|
45
|
+
*/
|
|
46
|
+
init(opts: BlocFeedInitOpts): void;
|
|
47
|
+
/**
|
|
48
|
+
* Attach a `user_id` to subsequent `track()` calls. Pass `undefined` to
|
|
49
|
+
* clear. `traits` is reserved for future use; currently ignored.
|
|
50
|
+
*/
|
|
51
|
+
identify(userId: string, _traits?: Record<string, unknown>): void;
|
|
52
|
+
/** Send a custom event. See `track()` for validation rules. */
|
|
53
|
+
track(name: string, properties?: TrackProperties): void;
|
|
54
|
+
/** Tear down the standalone tracker. Safe to call when not installed. */
|
|
55
|
+
uninstall(): void;
|
|
56
|
+
};
|
|
57
|
+
/** @internal */
|
|
58
|
+
declare function __getStandaloneTrackerForTesting(): BehavioralTracker | null;
|
|
59
|
+
/** @internal */
|
|
60
|
+
declare function __resetStandaloneTrackerForTesting(): void;
|
|
61
|
+
|
|
62
|
+
export { BehavioralConfig, BlocFeed, type BlocFeedInitOpts, BlocFeedPassive, type BlocFeedPassiveProps, __getStandaloneTrackerForTesting, __resetStandaloneTrackerForTesting };
|
package/dist/passive.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {s,r as r$1,t}from'./chunk-XF3APCYE.js';export{F as SDK_VERSION}from'./chunk-XF3APCYE.js';import {useEffect}from'react';function a(e){e.user?.id&&r$1(e.user.id);let i=new t({blocfeedId:e.blocfeed_id,...e.config!==void 0?{config:e.config}:{},...e.extraSdkFeatures!==void 0?{extraSdkFeatures:e.extraSdkFeatures}:{}});return i.install(),i}function u(e){return useEffect(()=>{let i=a({blocfeed_id:e.blocfeed_id,...e.user!==void 0?{user:e.user}:{},...e.config!==void 0?{config:e.config}:{}});return ()=>{i.uninstall();}},[e.blocfeed_id]),null}var r=null,g={init(e){r||(r=a(e));},identify(e,i){r$1(e);},track(e,i){s(e,i);},uninstall(){r&&(r.uninstall(),r=null);}};function v(){return r}function k(){r&&(r.uninstall(),r=null);}export{g as BlocFeed,u as BlocFeedPassive,v as __getStandaloneTrackerForTesting,k as __resetStandaloneTrackerForTesting};
|