@supernal/interface 1.0.13 → 1.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.
Files changed (31) hide show
  1. package/dist/cjs/src/index.js +18 -1
  2. package/dist/cjs/src/index.js.map +1 -1
  3. package/dist/cjs/src/tracking/SITrackingProvider.js +126 -0
  4. package/dist/cjs/src/tracking/SITrackingProvider.js.map +1 -0
  5. package/dist/cjs/src/tracking/hooks.js +233 -0
  6. package/dist/cjs/src/tracking/hooks.js.map +1 -0
  7. package/dist/cjs/src/tracking/index.js +67 -0
  8. package/dist/cjs/src/tracking/index.js.map +1 -0
  9. package/dist/cjs/src/tracking/tracker.js +289 -0
  10. package/dist/cjs/src/tracking/tracker.js.map +1 -0
  11. package/dist/esm/src/index.d.ts +3 -0
  12. package/dist/esm/src/index.d.ts.map +1 -1
  13. package/dist/esm/src/index.js +4 -0
  14. package/dist/esm/src/index.js.map +1 -1
  15. package/dist/esm/src/tracking/SITrackingProvider.d.ts +64 -0
  16. package/dist/esm/src/tracking/SITrackingProvider.d.ts.map +1 -0
  17. package/dist/esm/src/tracking/SITrackingProvider.js +82 -0
  18. package/dist/esm/src/tracking/SITrackingProvider.js.map +1 -0
  19. package/dist/esm/src/tracking/hooks.d.ts +112 -0
  20. package/dist/esm/src/tracking/hooks.d.ts.map +1 -0
  21. package/dist/esm/src/tracking/hooks.js +215 -0
  22. package/dist/esm/src/tracking/hooks.js.map +1 -0
  23. package/dist/esm/src/tracking/index.d.ts +48 -0
  24. package/dist/esm/src/tracking/index.d.ts.map +1 -0
  25. package/dist/esm/src/tracking/index.js +51 -0
  26. package/dist/esm/src/tracking/index.js.map +1 -0
  27. package/dist/esm/src/tracking/tracker.d.ts +121 -0
  28. package/dist/esm/src/tracking/tracker.d.ts.map +1 -0
  29. package/dist/esm/src/tracking/tracker.js +284 -0
  30. package/dist/esm/src/tracking/tracker.js.map +1 -0
  31. package/package.json +9 -4
@@ -46,7 +46,7 @@ var __importStar = (this && this.__importStar) || (function () {
46
46
  })();
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
48
  exports.inferNavToContainerMap = exports.architectureRegistry = exports.ContainerRegistry = exports.createAutoInitializer = exports.initializeArchitecture = exports.ExposureCollector = exports.useToolBinding = exports.DOMExecutor = exports.RouteContractGenerator = exports.NameExtractor = exports.NextjsDynamicScanner = exports.RouteScanner = exports.ContractScanner = exports.Names = exports.SystemTools = exports.isStatefulComponent = exports.Component = exports.ComponentRegistry = exports.ToolRegistry = exports.pathPreset = exports.componentPreset = exports.createPreset = exports.PresetTemplates = exports.clearToolPresets = exports.registerPendingPreset = exports.applyPreset = exports.getToolPreset = exports.ToolPreset = exports.OnboardingAndTestTool = exports.AIAndTestTool = exports.NavigationTool = exports.DataWriteTool = exports.DataReadTool = exports.DestructiveTool = exports.DangerousTool = exports.OnboardingTool = exports.TestTool = exports.AITool = exports.FormTool = exports.MultiActionTool = exports.HoverTool = exports.TypeTool = exports.ChangeTool = exports.ClickTool = exports.isToolProvider = exports.getToolProviderConfig = exports.ToolProvider = exports.getStandaloneTool = exports.getStandaloneTools = exports.Tool = void 0;
49
- exports.PACKAGE_NAME = exports.VERSION = exports.LocationContext = exports.TreeBuilder = exports.RuntimeTreeBuilder = exports.NavigationGraph = exports.onStateChange = exports.waitForState = exports.getStateFromDom = exports.triggerStateChange = exports.syncStateToDom = exports.setupBridge = exports.createAuditTrail = exports.registerReadable = exports.bridgeComponentState = exports.bridgeToolRegistry = exports.withChatUI = exports.useChatUIOptional = exports.useChatUI = exports.ChatUI = exports.ChatUIProvider = exports.isComponentId = exports.getComponentIds = exports.createNames = exports.createContainers = exports.createContainer = void 0;
49
+ exports.withTracking = exports.TrackingProvider = exports.createComponentTrackingHook = exports.useTrackVisibility = exports.useTrackScrollDepth = exports.useTrackEngagement = exports.useTrackView = exports.useTrackClick = exports.useSITrackingInit = exports.useTracker = exports.SITrackerProvider = exports.createTracker = exports.SITracker = exports.PACKAGE_NAME = exports.VERSION = exports.LocationContext = exports.TreeBuilder = exports.RuntimeTreeBuilder = exports.NavigationGraph = exports.onStateChange = exports.waitForState = exports.getStateFromDom = exports.triggerStateChange = exports.syncStateToDom = exports.setupBridge = exports.createAuditTrail = exports.registerReadable = exports.bridgeComponentState = exports.bridgeToolRegistry = exports.withChatUI = exports.useChatUIOptional = exports.useChatUI = exports.ChatUI = exports.ChatUIProvider = exports.isComponentId = exports.getComponentIds = exports.createNames = exports.createContainers = exports.createContainer = void 0;
50
50
  // Core decorators and registry
51
51
  var Tool_1 = require("./decorators/Tool");
52
52
  Object.defineProperty(exports, "Tool", { enumerable: true, get: function () { return Tool_1.Tool; } });
@@ -187,6 +187,23 @@ Object.defineProperty(exports, "LocationContext", { enumerable: true, get: funct
187
187
  // Version info
188
188
  exports.VERSION = '1.1.0'; // Updated for MCP + State Management
189
189
  exports.PACKAGE_NAME = '@supernal/interface';
190
+ // Interaction Tracking
191
+ var tracker_1 = require("./tracking/tracker");
192
+ Object.defineProperty(exports, "SITracker", { enumerable: true, get: function () { return tracker_1.SITracker; } });
193
+ Object.defineProperty(exports, "createTracker", { enumerable: true, get: function () { return tracker_1.createTracker; } });
194
+ var hooks_1 = require("./tracking/hooks");
195
+ Object.defineProperty(exports, "SITrackerProvider", { enumerable: true, get: function () { return hooks_1.SITrackerProvider; } });
196
+ Object.defineProperty(exports, "useTracker", { enumerable: true, get: function () { return hooks_1.useTracker; } });
197
+ Object.defineProperty(exports, "useSITrackingInit", { enumerable: true, get: function () { return hooks_1.useSITrackingInit; } });
198
+ Object.defineProperty(exports, "useTrackClick", { enumerable: true, get: function () { return hooks_1.useTrackClick; } });
199
+ Object.defineProperty(exports, "useTrackView", { enumerable: true, get: function () { return hooks_1.useTrackView; } });
200
+ Object.defineProperty(exports, "useTrackEngagement", { enumerable: true, get: function () { return hooks_1.useTrackEngagement; } });
201
+ Object.defineProperty(exports, "useTrackScrollDepth", { enumerable: true, get: function () { return hooks_1.useTrackScrollDepth; } });
202
+ Object.defineProperty(exports, "useTrackVisibility", { enumerable: true, get: function () { return hooks_1.useTrackVisibility; } });
203
+ Object.defineProperty(exports, "createComponentTrackingHook", { enumerable: true, get: function () { return hooks_1.createComponentTrackingHook; } });
204
+ var SITrackingProvider_1 = require("./tracking/SITrackingProvider");
205
+ Object.defineProperty(exports, "TrackingProvider", { enumerable: true, get: function () { return SITrackingProvider_1.TrackingProvider; } });
206
+ Object.defineProperty(exports, "withTracking", { enumerable: true, get: function () { return SITrackingProvider_1.withTracking; } });
190
207
  // Enterprise features not included in open source
191
208
  // Available at https://supernal.ai/enterprise:
192
209
  // - Test Generation (TestGenerator, ComponentTestGenerator, DocumentationGenerator)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+BAA+B;AAC/B,0CAAmE;AAA1D,4FAAA,IAAI,OAAA;AACb,0CAA0E;AAAjE,0GAAA,kBAAkB,OAAA;AAAE,yGAAA,iBAAiB,OAAA;AAC9C,0DAKmC;AAJjC,4GAAA,YAAY,OAAA;AAEZ,qHAAA,qBAAqB,OAAA;AACrB,8GAAA,cAAc,OAAA;AAGhB,mBAAmB;AACnB,wDAOkC;AANhC,wGAAA,SAAS,OAAA;AACT,yGAAA,UAAU,OAAA;AACV,uGAAA,QAAQ,OAAA;AACR,wGAAA,SAAS,OAAA;AACT,8GAAA,eAAe,OAAA;AACf,uGAAA,QAAQ,OAAA;AAGV,qCAAqC;AACrC,kEAWuC;AAVrC,0GAAA,MAAM,OAAA;AACN,4GAAA,QAAQ,OAAA;AACR,kHAAA,cAAc,OAAA;AACd,iHAAA,aAAa,OAAA;AACb,mHAAA,eAAe,OAAA;AACf,gHAAA,YAAY,OAAA;AACZ,iHAAA,aAAa,OAAA;AACb,kHAAA,cAAc,OAAA;AACd,iHAAA,aAAa,OAAA;AACb,yHAAA,qBAAqB,OAAA;AAEvB,sDAUiC;AAT/B,wGAAA,UAAU,OAAA;AACV,2GAAA,aAAa,OAAA;AACb,yGAAA,WAAW,OAAA;AACX,mHAAA,qBAAqB,OAAA;AACrB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,0GAAA,YAAY,OAAA;AACZ,6GAAA,eAAe,OAAA;AACf,wGAAA,UAAU,OAAA;AAGZ,aAAa;AACb,mEAAkE;AAAzD,4GAAA,YAAY,OAAA;AACrB,6EAA+F;AAAtF,sHAAA,iBAAiB,OAAA;AAE1B,uBAAuB;AACvB,oDAAoE;AAA3D,sGAAA,SAAS,OAAA;AAElB,sBAAsB;AACtB,oEAAwF;AAA5D,wHAAA,mBAAmB,OAAA;AAE/C,iDAAiD;AACjD,4CAA0B;AAE1B,eAAe;AACf,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,4CAA4C;AAC5C,4CAA0B;AAE1B,kBAAkB;AAClB,yCAAuB;AAEvB,oCAAoC;AACpC,kDAAkC;AAElC,yBAAyB;AACzB,mDAK0B;AAJxB,iHAAA,eAAe,OAAA;AAMjB,iBAAiB;AACjB,mCAQkB;AAPhB,sGAAA,YAAY,OAAA;AACZ,8GAAA,oBAAoB,OAAA;AACpB,uGAAA,aAAa,OAAA;AACb,gHAAA,sBAAsB,OAAA;AAMxB,oEAAoE;AACpE,uFAAuF;AACvF,mIAAmI;AACnI,qEAAqE;AAErE,oBAAoB;AACpB,uDAAsD;AAA7C,0GAAA,WAAW,OAAA;AAEpB,cAAc;AACd,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AAEvB,QAAQ;AACR,0CAAwB;AAGxB,oCAAoC;AACpC,uCAAqB;AAErB,eAAe;AACf,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA;AAE1B,sCAAsC;AACtC,0DAImC;AAHjC,sHAAA,sBAAsB,OAAA;AACtB,qHAAA,qBAAqB,OAAA;AACrB,iHAAA,iBAAiB,OAAA;AAEnB,oDAAuF;AAA9E,gHAAA,oBAAoB,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AACrD,kEAAmF;AAA1E,kHAAA,eAAe,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAK1C,QAAQ;AACR,mDAAkF;AAAzE,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,4GAAA,aAAa,OAAA;AAGpD,uDAAuD;AACvD,uCAuBoB;AAflB,WAAW;AACX,0GAAA,cAAc,OAAA;AACd,kGAAA,MAAM,OAAA;AACN,qGAAA,SAAS,OAAA;AACT,6GAAA,iBAAiB,OAAA;AACjB,sGAAA,UAAU,OAAA;AACV,WAAW;AACX,6FAA6F;AAC7F,qFAAqF;AACrF,mBAAmB;AACnB,8GAAA,kBAAkB,OAAA;AAClB,gHAAA,oBAAoB,OAAA;AACpB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,uGAAA,WAAW,OAAA;AAiCb,mCAAmC;AACnC,+CAO2B;AANzB,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,yGAAA,YAAY,OAAA;AACZ,0GAAA,aAAa,OAAA;AAIf,uDAAuD;AACvD,2EAA0E;AAAjE,kHAAA,eAAe,OAAA;AAExB,iFAAgF;AAAvE,wHAAA,kBAAkB,OAAA;AAC3B,iFAAyE;AAAhE,iHAAA,WAAW,OAAA;AACpB,yEAAwE;AAA/D,kHAAA,eAAe,OAAA;AAExB,eAAe;AACF,QAAA,OAAO,GAAG,OAAO,CAAC,CAAC,qCAAqC;AACxD,QAAA,YAAY,GAAG,qBAAqB,CAAC;AAElD,kDAAkD;AAClD,+CAA+C;AAC/C,oFAAoF;AACpF,8DAA8D;AAC9D,wEAAwE;AACxE,oEAAoE;AACpE,mCAAmC;AACnC,wCAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * SI Tracking Provider Component
4
+ *
5
+ * React component that provides the tracker instance to the component tree.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ 'use client';
10
+ /**
11
+ * SI Tracking Provider Component
12
+ *
13
+ * React component that provides the tracker instance to the component tree.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || (function () {
34
+ var ownKeys = function(o) {
35
+ ownKeys = Object.getOwnPropertyNames || function (o) {
36
+ var ar = [];
37
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
+ return ar;
39
+ };
40
+ return ownKeys(o);
41
+ };
42
+ return function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
+ __setModuleDefault(result, mod);
47
+ return result;
48
+ };
49
+ })();
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.TrackingProvider = TrackingProvider;
52
+ exports.withTracking = withTracking;
53
+ const react_1 = __importStar(require("react"));
54
+ const tracker_1 = require("./tracker");
55
+ const hooks_1 = require("./hooks");
56
+ /**
57
+ * Provider component that initializes SI tracking for your app
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * // With config
62
+ * function App() {
63
+ * const { user } = useAuth();
64
+ * return (
65
+ * <SITrackingProvider
66
+ * config={{ endpoint: '/api/analytics' }}
67
+ * userId={user?.id}
68
+ * >
69
+ * <YourApp />
70
+ * </SITrackingProvider>
71
+ * );
72
+ * }
73
+ *
74
+ * // With existing tracker
75
+ * const tracker = createTracker({ endpoint: '/api/analytics' });
76
+ *
77
+ * function App() {
78
+ * return (
79
+ * <SITrackingProvider tracker={tracker}>
80
+ * <YourApp />
81
+ * </SITrackingProvider>
82
+ * );
83
+ * }
84
+ * ```
85
+ */
86
+ function TrackingProvider({ children, config, tracker: externalTracker, userId, onTrackerCreated, }) {
87
+ // Create or use provided tracker
88
+ const tracker = (0, react_1.useMemo)(() => {
89
+ if (externalTracker)
90
+ return externalTracker;
91
+ const newTracker = (0, tracker_1.createTracker)(config);
92
+ onTrackerCreated?.(newTracker);
93
+ return newTracker;
94
+ }, [externalTracker, config, onTrackerCreated]);
95
+ // Sync user ID
96
+ (0, hooks_1.useSITrackingInit)(tracker, userId);
97
+ // Cleanup on unmount
98
+ (0, react_1.useEffect)(() => {
99
+ return () => {
100
+ // Only destroy if we created the tracker
101
+ if (!externalTracker) {
102
+ tracker.destroy();
103
+ }
104
+ };
105
+ }, [tracker, externalTracker]);
106
+ return react_1.default.createElement(hooks_1.SITrackerProvider, { value: tracker }, children);
107
+ }
108
+ /**
109
+ * Higher-order component to inject tracker
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * const TrackedComponent = withTracking(MyComponent);
114
+ * // MyComponent receives `tracker` prop
115
+ * ```
116
+ */
117
+ function withTracking(WrappedComponent) {
118
+ // Inner component that uses the hook
119
+ function WithTrackingInner(props) {
120
+ const tracker = (0, hooks_1.useTracker)();
121
+ return react_1.default.createElement(WrappedComponent, { ...props, tracker: tracker });
122
+ }
123
+ WithTrackingInner.displayName = `withTracking(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`;
124
+ return WithTrackingInner;
125
+ }
126
+ //# sourceMappingURL=SITrackingProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SITrackingProvider.js","sourceRoot":"","sources":["../../../../src/tracking/SITrackingProvider.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,YAAY,CAAC;AARb;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDH,4CA6BC;AAWD,oCAYC;AAlGD,+CAAkD;AAClD,uCAAsE;AACtE,mCAA2E;AAc3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EAAE,eAAe,EACxB,MAAM,EACN,gBAAgB,GACQ;IACxB,iCAAiC;IACjC,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3B,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,MAAM,CAAC,CAAC;QACzC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhD,eAAe;IACf,IAAA,yBAAiB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnC,qBAAqB;IACrB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,yCAAyC;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAE/B,OAAO,8BAAC,yBAAiB,IAAC,KAAK,EAAE,OAAO,IAAG,QAAQ,CAAqB,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,gBAAwC;IAExC,qCAAqC;IACrC,SAAS,iBAAiB,CAAC,KAAyB;QAClD,MAAM,OAAO,GAAG,IAAA,kBAAU,GAAE,CAAC;QAC7B,OAAO,8BAAC,gBAAgB,OAAM,KAAW,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;IAClE,CAAC;IAED,iBAAiB,CAAC,WAAW,GAAG,gBAAgB,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAExH,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * SI Tracking React Hooks
4
+ *
5
+ * React hooks for integrating Supernal Interface tracking into components.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ 'use client';
10
+ /**
11
+ * SI Tracking React Hooks
12
+ *
13
+ * React hooks for integrating Supernal Interface tracking into components.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SITrackerProvider = void 0;
19
+ exports.useTracker = useTracker;
20
+ exports.useSITrackingInit = useSITrackingInit;
21
+ exports.useTrackClick = useTrackClick;
22
+ exports.useTrackView = useTrackView;
23
+ exports.useTrackEngagement = useTrackEngagement;
24
+ exports.useTrackScrollDepth = useTrackScrollDepth;
25
+ exports.useTrackVisibility = useTrackVisibility;
26
+ exports.createComponentTrackingHook = createComponentTrackingHook;
27
+ const react_1 = require("react");
28
+ // Context for providing tracker instance
29
+ const SITrackerContext = (0, react_1.createContext)(null);
30
+ exports.SITrackerProvider = SITrackerContext.Provider;
31
+ /**
32
+ * Get the tracker instance from context
33
+ */
34
+ function useTracker() {
35
+ return (0, react_1.useContext)(SITrackerContext);
36
+ }
37
+ /**
38
+ * Hook to sync auth state with tracker
39
+ * Place this once in your app layout
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * function App() {
44
+ * const { user } = useAuth();
45
+ * useSITrackingInit(tracker, user?.id);
46
+ * return <div>...</div>;
47
+ * }
48
+ * ```
49
+ */
50
+ function useSITrackingInit(tracker, userId) {
51
+ (0, react_1.useEffect)(() => {
52
+ if (tracker) {
53
+ tracker.setUserId(userId ?? null);
54
+ }
55
+ }, [tracker, userId]);
56
+ }
57
+ /**
58
+ * Hook for tracking click events
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * const trackClick = useTrackClick(tracker, 'PostCard');
63
+ * <button onClick={() => trackClick('like', postId)}>Like</button>
64
+ * ```
65
+ */
66
+ function useTrackClick(tracker, componentId) {
67
+ return (0, react_1.useCallback)((action, targetId, metadata) => {
68
+ if (tracker) {
69
+ tracker.trackClick(componentId, action, targetId, metadata);
70
+ }
71
+ }, [tracker, componentId]);
72
+ }
73
+ /**
74
+ * Hook for tracking component views (impressions)
75
+ * Automatically tracks when component mounts
76
+ *
77
+ * @example
78
+ * ```tsx
79
+ * useTrackView(tracker, 'PostCard', post.id);
80
+ * ```
81
+ */
82
+ function useTrackView(tracker, componentId, targetId, options) {
83
+ const { trackOnMount = true } = options ?? {};
84
+ (0, react_1.useEffect)(() => {
85
+ if (tracker && trackOnMount) {
86
+ tracker.trackView(componentId, targetId);
87
+ }
88
+ }, [tracker, componentId, targetId, trackOnMount]);
89
+ }
90
+ /**
91
+ * Hook for tracking engagement time on a specific target
92
+ * Automatically handles start/end of engagement session
93
+ *
94
+ * @example
95
+ * ```tsx
96
+ * const { recordInteraction } = useTrackEngagement(tracker, post.id);
97
+ * <button onClick={recordInteraction}>Interact</button>
98
+ * ```
99
+ */
100
+ function useTrackEngagement(tracker, targetId, componentId = 'Content') {
101
+ const engagementStarted = (0, react_1.useRef)(false);
102
+ (0, react_1.useEffect)(() => {
103
+ if (!tracker || !targetId)
104
+ return;
105
+ // Start engagement tracking
106
+ tracker.startEngagement(targetId);
107
+ engagementStarted.current = true;
108
+ return () => {
109
+ // End engagement tracking on unmount
110
+ if (engagementStarted.current && tracker) {
111
+ tracker.endEngagement(targetId, componentId);
112
+ engagementStarted.current = false;
113
+ }
114
+ };
115
+ }, [tracker, targetId, componentId]);
116
+ const recordInteraction = (0, react_1.useCallback)(() => {
117
+ if (tracker) {
118
+ tracker.recordEngagementInteraction(targetId);
119
+ }
120
+ }, [tracker, targetId]);
121
+ return { recordInteraction };
122
+ }
123
+ /**
124
+ * Hook for tracking scroll depth in feed
125
+ * Attach to a scrollable container
126
+ *
127
+ * @example
128
+ * ```tsx
129
+ * const { handleScroll, resetScroll } = useTrackScrollDepth(tracker);
130
+ * <div onScroll={handleScroll}>...</div>
131
+ * ```
132
+ */
133
+ function useTrackScrollDepth(tracker, componentId = 'Feed') {
134
+ const handleScroll = (0, react_1.useCallback)((event) => {
135
+ if (!tracker)
136
+ return;
137
+ const target = event.currentTarget;
138
+ const scrollHeight = target.scrollHeight - target.clientHeight;
139
+ if (scrollHeight <= 0)
140
+ return;
141
+ const scrollPercent = Math.round((target.scrollTop / scrollHeight) * 100);
142
+ tracker.trackScrollDepth(scrollPercent, componentId);
143
+ }, [tracker, componentId]);
144
+ const resetScroll = (0, react_1.useCallback)(() => {
145
+ if (tracker) {
146
+ tracker.resetScrollTracking();
147
+ }
148
+ }, [tracker]);
149
+ // Reset on mount
150
+ (0, react_1.useEffect)(() => {
151
+ if (tracker) {
152
+ tracker.resetScrollTracking();
153
+ }
154
+ }, [tracker]);
155
+ return { handleScroll, resetScroll };
156
+ }
157
+ /**
158
+ * Hook for tracking intersection observer visibility
159
+ * Useful for tracking when components come into view in feed
160
+ *
161
+ * @example
162
+ * ```tsx
163
+ * const ref = useTrackVisibility(tracker, 'PostCard', post.id);
164
+ * <div ref={ref}>...</div>
165
+ * ```
166
+ */
167
+ function useTrackVisibility(tracker, componentId, targetId, options) {
168
+ const { threshold = 0.5 } = options ?? {};
169
+ const hasTracked = (0, react_1.useRef)(false);
170
+ const observerRef = (0, react_1.useRef)(null);
171
+ const refCallback = (0, react_1.useCallback)((element) => {
172
+ // Cleanup previous observer
173
+ if (observerRef.current) {
174
+ observerRef.current.disconnect();
175
+ observerRef.current = null;
176
+ }
177
+ if (!element || !tracker)
178
+ return;
179
+ // Create new observer
180
+ observerRef.current = new IntersectionObserver((entries) => {
181
+ entries.forEach((entry) => {
182
+ if (entry.isIntersecting && !hasTracked.current) {
183
+ tracker.trackView(componentId, targetId);
184
+ hasTracked.current = true;
185
+ }
186
+ });
187
+ }, { threshold });
188
+ observerRef.current.observe(element);
189
+ }, [tracker, componentId, targetId, threshold]);
190
+ // Reset tracking flag when targetId changes
191
+ (0, react_1.useEffect)(() => {
192
+ hasTracked.current = false;
193
+ }, [targetId]);
194
+ // Cleanup on unmount
195
+ (0, react_1.useEffect)(() => {
196
+ return () => {
197
+ if (observerRef.current) {
198
+ observerRef.current.disconnect();
199
+ }
200
+ };
201
+ }, []);
202
+ return refCallback;
203
+ }
204
+ /**
205
+ * Create a component-specific tracking hook factory
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * // Define your actions
210
+ * type PostActions = 'like' | 'unlike' | 'share' | 'bookmark';
211
+ *
212
+ * // Create hooks for PostCard
213
+ * export function usePostCardTracking(tracker: SITracker<PostActions>, postId: string) {
214
+ * const trackClick = useTrackClick(tracker, 'PostCard');
215
+ * const visibilityRef = useTrackVisibility(tracker, 'PostCard', postId);
216
+ *
217
+ * return {
218
+ * trackLike: () => trackClick('like', postId),
219
+ * trackShare: () => trackClick('share', postId),
220
+ * visibilityRef,
221
+ * };
222
+ * }
223
+ * ```
224
+ */
225
+ function createComponentTrackingHook(componentId, factory) {
226
+ return function useComponentTracking(tracker, targetId) {
227
+ const trackClick = useTrackClick(tracker, componentId);
228
+ if (!tracker)
229
+ return null;
230
+ return factory(trackClick, tracker, targetId);
231
+ };
232
+ }
233
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/tracking/hooks.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,YAAY,CAAC;AARb;;;;;;GAMG;;;AAeH,gCAEC;AAeD,8CASC;AAWD,sCAYC;AAWD,oCAaC;AAYD,gDAgCC;AAYD,kDAoCC;AAYD,gDAqDC;AAuBD,kEAkBC;AA1RD,iCAAkF;AAGlF,yCAAyC;AACzC,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAmB,IAAI,CAAC,CAAC;AAElD,QAAA,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAE3D;;GAEG;AACH,SAAgB,UAAU;IACxB,OAAO,IAAA,kBAAU,EAAC,gBAAgB,CAA8B,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,iBAAiB,CAC/B,OAAyB,EACzB,MAAiC;IAEjC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAC3B,OAAkC,EAClC,WAAmB;IAEnB,OAAO,IAAA,mBAAW,EAChB,CAAC,MAAe,EAAE,QAAiB,EAAE,QAAkC,EAAE,EAAE;QACzE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,OAAyB,EACzB,WAAmB,EACnB,QAAiB,EACjB,OAAoC;IAEpC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,OAAyB,EACzB,QAAgB,EAChB,WAAW,GAAG,SAAS;IAIvB,MAAM,iBAAiB,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,4BAA4B;QAC5B,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAClC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;QAEjC,OAAO,GAAG,EAAE;YACV,qCAAqC;YACrC,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;gBACzC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC7C,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;YACpC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAErC,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,OAAyB,EACzB,WAAW,GAAG,MAAM;IAKpB,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,CAAC,KAAiC,EAAE,EAAE;QACpC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAE/D,IAAI,YAAY,IAAI,CAAC;YAAE,OAAO;QAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;QAC1E,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC,EACD,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,iBAAiB;IACjB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,OAAyB,EACzB,WAAmB,EACnB,QAAiB,EACjB,OAAgC;IAEhC,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,IAAA,cAAM,EAA8B,IAAI,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,OAA2B,EAAE,EAAE;QAC9B,4BAA4B;QAC5B,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE,OAAO;QAEjC,sBAAsB;QACtB,WAAW,CAAC,OAAO,GAAG,IAAI,oBAAoB,CAC5C,CAAC,OAAO,EAAE,EAAE;YACV,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBAChD,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBACzC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EACD,EAAE,SAAS,EAAE,CACd,CAAC;QAEF,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,EACD,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAC5C,CAAC;IAEF,4CAA4C;IAC5C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,qBAAqB;IACrB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACnC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,2BAA2B,CACzC,WAAmB,EACnB,OAIY;IAEZ,OAAO,SAAS,oBAAoB,CAClC,OAAkC,EAClC,QAAgB;QAEhB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,OAAO,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Supernal Interface Tracking Module
4
+ *
5
+ * Analytics and interaction tracking for SI-enabled applications.
6
+ * Automatically batches events, handles offline scenarios, and provides
7
+ * React hooks for easy integration.
8
+ *
9
+ * @packageDocumentation
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Create a tracker
14
+ * import { createTracker, TrackingProvider, useTrackClick } from '@supernal/interface/tracking';
15
+ *
16
+ * const tracker = createTracker({
17
+ * endpoint: '/api/v1/analytics',
18
+ * batchSize: 10,
19
+ * debug: process.env.NODE_ENV === 'development',
20
+ * });
21
+ *
22
+ * // Provide to React tree
23
+ * function App() {
24
+ * const { user } = useAuth();
25
+ * return (
26
+ * <TrackingProvider tracker={tracker} userId={user?.id}>
27
+ * <YourApp />
28
+ * </TrackingProvider>
29
+ * );
30
+ * }
31
+ *
32
+ * // Use in components
33
+ * function PostCard({ post }) {
34
+ * const tracker = useTracker();
35
+ * const trackClick = useTrackClick(tracker, 'PostCard');
36
+ * const visibilityRef = useTrackVisibility(tracker, 'PostCard', post.id);
37
+ *
38
+ * return (
39
+ * <div ref={visibilityRef}>
40
+ * <button onClick={() => trackClick('like', post.id)}>Like</button>
41
+ * </div>
42
+ * );
43
+ * }
44
+ * ```
45
+ */
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.withTracking = exports.TrackingProvider = exports.createComponentTrackingHook = exports.useTrackVisibility = exports.useTrackScrollDepth = exports.useTrackEngagement = exports.useTrackView = exports.useTrackClick = exports.useSITrackingInit = exports.useTracker = exports.SITrackerProvider = exports.createTracker = exports.SITracker = void 0;
48
+ // Core tracker
49
+ var tracker_1 = require("./tracker");
50
+ Object.defineProperty(exports, "SITracker", { enumerable: true, get: function () { return tracker_1.SITracker; } });
51
+ Object.defineProperty(exports, "createTracker", { enumerable: true, get: function () { return tracker_1.createTracker; } });
52
+ // React hooks
53
+ var hooks_1 = require("./hooks");
54
+ Object.defineProperty(exports, "SITrackerProvider", { enumerable: true, get: function () { return hooks_1.SITrackerProvider; } });
55
+ Object.defineProperty(exports, "useTracker", { enumerable: true, get: function () { return hooks_1.useTracker; } });
56
+ Object.defineProperty(exports, "useSITrackingInit", { enumerable: true, get: function () { return hooks_1.useSITrackingInit; } });
57
+ Object.defineProperty(exports, "useTrackClick", { enumerable: true, get: function () { return hooks_1.useTrackClick; } });
58
+ Object.defineProperty(exports, "useTrackView", { enumerable: true, get: function () { return hooks_1.useTrackView; } });
59
+ Object.defineProperty(exports, "useTrackEngagement", { enumerable: true, get: function () { return hooks_1.useTrackEngagement; } });
60
+ Object.defineProperty(exports, "useTrackScrollDepth", { enumerable: true, get: function () { return hooks_1.useTrackScrollDepth; } });
61
+ Object.defineProperty(exports, "useTrackVisibility", { enumerable: true, get: function () { return hooks_1.useTrackVisibility; } });
62
+ Object.defineProperty(exports, "createComponentTrackingHook", { enumerable: true, get: function () { return hooks_1.createComponentTrackingHook; } });
63
+ // React provider component
64
+ var SITrackingProvider_1 = require("./SITrackingProvider");
65
+ Object.defineProperty(exports, "TrackingProvider", { enumerable: true, get: function () { return SITrackingProvider_1.TrackingProvider; } });
66
+ Object.defineProperty(exports, "withTracking", { enumerable: true, get: function () { return SITrackingProvider_1.withTracking; } });
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tracking/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;;;AAEH,eAAe;AACf,qCAMmB;AALjB,oGAAA,SAAS,OAAA;AACT,wGAAA,aAAa,OAAA;AAMf,cAAc;AACd,iCAUiB;AATf,0GAAA,iBAAiB,OAAA;AACjB,mGAAA,UAAU,OAAA;AACV,0GAAA,iBAAiB,OAAA;AACjB,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,2GAAA,kBAAkB,OAAA;AAClB,4GAAA,mBAAmB,OAAA;AACnB,2GAAA,kBAAkB,OAAA;AAClB,oHAAA,2BAA2B,OAAA;AAG7B,2BAA2B;AAC3B,2DAAoG;AAA3F,sHAAA,gBAAgB,OAAA;AAAE,kHAAA,YAAY,OAAA"}