@syntrologie/runtime-sdk 0.2.20 → 1.0.0-canary.1
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/CAPABILITIES.md +756 -284
- package/README.md +310 -68
- package/dist/RuntimeProvider.d.ts +51 -0
- package/dist/RuntimeProvider.js +113 -0
- package/dist/RuntimeProvider.js.map +1 -0
- package/dist/SmartCanvasApp.d.ts +16 -10
- package/dist/SmartCanvasApp.js +45 -49
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/SmartCanvasElement.d.ts +5 -5
- package/dist/SmartCanvasElement.js +24 -14
- package/dist/SmartCanvasElement.js.map +1 -1
- package/dist/SmartCanvasPortal.d.ts +2 -2
- package/dist/SmartCanvasPortal.js +2 -2
- package/dist/actions/ActionEngine.d.ts +11 -0
- package/dist/actions/ActionEngine.js +274 -0
- package/dist/actions/ActionEngine.js.map +1 -0
- package/dist/actions/executors/index.d.ts +117 -0
- package/dist/actions/executors/index.js +242 -0
- package/dist/actions/executors/index.js.map +1 -0
- package/dist/actions/executors/tour.d.ts +18 -0
- package/dist/actions/executors/tour.js +332 -0
- package/dist/actions/executors/tour.js.map +1 -0
- package/dist/actions/index.d.ts +10 -0
- package/dist/actions/index.js +12 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/types.d.ts +399 -0
- package/dist/actions/types.js +8 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/actions/validation.d.ts +14 -0
- package/dist/actions/validation.js +602 -0
- package/dist/actions/validation.js.map +1 -0
- package/dist/antiFlicker.js +1 -1
- package/dist/api.d.ts +40 -26
- package/dist/api.js +90 -59
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.d.ts +31 -0
- package/dist/apps/AppContext.js +93 -0
- package/dist/apps/AppContext.js.map +1 -0
- package/dist/apps/AppLoader.d.ts +84 -0
- package/dist/apps/AppLoader.js +256 -0
- package/dist/apps/AppLoader.js.map +1 -0
- package/dist/apps/AppRegistry.d.ts +102 -0
- package/dist/apps/AppRegistry.js +317 -0
- package/dist/apps/AppRegistry.js.map +1 -0
- package/dist/apps/adaptive-chatbot/index.js +7 -0
- package/dist/apps/adaptive-chatbot/index.js.map +7 -0
- package/dist/apps/examples/gamification-app.example.d.ts +305 -0
- package/dist/apps/examples/gamification-app.example.js +329 -0
- package/dist/apps/examples/gamification-app.example.js.map +1 -0
- package/dist/apps/faq/index.js +11 -0
- package/dist/apps/faq/index.js.map +7 -0
- package/dist/apps/gamification/index.js +2 -0
- package/dist/apps/gamification/index.js.map +7 -0
- package/dist/apps/index.d.ts +15 -0
- package/dist/apps/index.js +17 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/nav/index.js +11 -0
- package/dist/apps/nav/index.js.map +7 -0
- package/dist/apps/types.d.ts +231 -0
- package/dist/apps/types.js +8 -0
- package/dist/apps/types.js.map +1 -0
- package/dist/blocks/data/ComparisonBlock.d.ts +1 -1
- package/dist/blocks/data/ComparisonBlock.js +40 -40
- package/dist/blocks/data/ComparisonBlock.js.map +1 -1
- package/dist/blocks/data/StatsBlock.d.ts +1 -1
- package/dist/blocks/data/StatsBlock.js +41 -41
- package/dist/blocks/data/StatsBlock.js.map +1 -1
- package/dist/blocks/data/index.d.ts +2 -2
- package/dist/blocks/data/index.js +2 -2
- package/dist/blocks/index.d.ts +5 -5
- package/dist/blocks/index.js +29 -29
- package/dist/blocks/index.js.map +1 -1
- package/dist/blocks/interactive/ChecklistBlock.d.ts +1 -1
- package/dist/blocks/interactive/ChecklistBlock.js +60 -60
- package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
- package/dist/blocks/interactive/RatingBlock.d.ts +1 -1
- package/dist/blocks/interactive/RatingBlock.js +75 -65
- package/dist/blocks/interactive/RatingBlock.js.map +1 -1
- package/dist/blocks/interactive/index.d.ts +2 -2
- package/dist/blocks/interactive/index.js +2 -2
- package/dist/blocks/notification/NotificationBlock.d.ts +2 -2
- package/dist/blocks/notification/NotificationBlock.js +67 -63
- package/dist/blocks/notification/NotificationBlock.js.map +1 -1
- package/dist/blocks/notification/index.d.ts +1 -1
- package/dist/blocks/notification/index.js +1 -1
- package/dist/bootstrap.d.ts +47 -9
- package/dist/bootstrap.js +237 -69
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
- package/dist/components/ShadowCanvasOverlay.js +144 -107
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.d.ts +5 -5
- package/dist/components/TileCard.js +204 -154
- package/dist/components/TileCard.js.map +1 -1
- package/dist/components/TileWheel.d.ts +3 -3
- package/dist/components/TileWheel.js +7 -7
- package/dist/components/TileWheel.js.map +1 -1
- package/dist/config-validator.d.ts +49 -0
- package/dist/config-validator.js +173 -0
- package/dist/config-validator.js.map +1 -0
- package/dist/configFetcher.d.ts +2 -2
- package/dist/configFetcher.js +20 -8
- package/dist/configFetcher.js.map +1 -1
- package/dist/context/ContextManager.d.ts +66 -0
- package/dist/context/ContextManager.js +268 -0
- package/dist/context/ContextManager.js.map +1 -0
- package/dist/context/index.d.ts +7 -0
- package/dist/context/index.js +7 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/schema.d.ts +360 -0
- package/dist/context/schema.js +50 -0
- package/dist/context/schema.js.map +1 -0
- package/dist/context/types.d.ts +101 -0
- package/dist/context/types.js +8 -0
- package/dist/context/types.js.map +1 -0
- package/dist/decisions/engine.d.ts +43 -0
- package/dist/decisions/engine.js +112 -0
- package/dist/decisions/engine.js.map +1 -0
- package/dist/decisions/index.d.ts +9 -0
- package/dist/decisions/index.js +10 -0
- package/dist/decisions/index.js.map +1 -0
- package/dist/decisions/schema.d.ts +2166 -0
- package/dist/decisions/schema.js +143 -0
- package/dist/decisions/schema.js.map +1 -0
- package/dist/decisions/strategies/rules.d.ts +24 -0
- package/dist/decisions/strategies/rules.js +152 -0
- package/dist/decisions/strategies/rules.js.map +1 -0
- package/dist/decisions/strategies/score.d.ts +10 -0
- package/dist/decisions/strategies/score.js +29 -0
- package/dist/decisions/strategies/score.js.map +1 -0
- package/dist/decisions/types.d.ts +242 -0
- package/dist/decisions/types.js +2 -0
- package/dist/decisions/types.js.map +1 -0
- package/dist/earlyPatcher.d.ts +8 -20
- package/dist/earlyPatcher.js +13 -62
- package/dist/earlyPatcher.js.map +1 -1
- package/dist/editorLoader.d.ts +12 -0
- package/dist/editorLoader.js +132 -48
- package/dist/editorLoader.js.map +1 -1
- package/dist/events/EventBus.d.ts +59 -0
- package/dist/events/EventBus.js +152 -0
- package/dist/events/EventBus.js.map +1 -0
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.js +10 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/normalizers/canvas.d.ts +67 -0
- package/dist/events/normalizers/canvas.js +116 -0
- package/dist/events/normalizers/canvas.js.map +1 -0
- package/dist/events/normalizers/posthog.d.ts +53 -0
- package/dist/events/normalizers/posthog.js +163 -0
- package/dist/events/normalizers/posthog.js.map +1 -0
- package/dist/events/schema.d.ts +70 -0
- package/dist/events/schema.js +30 -0
- package/dist/events/schema.js.map +1 -0
- package/dist/events/types.d.ts +79 -0
- package/dist/events/types.js +49 -0
- package/dist/events/types.js.map +1 -0
- package/dist/experiments/adapters/growthbook.d.ts +4 -4
- package/dist/experiments/adapters/growthbook.js +5 -5
- package/dist/experiments/adapters/growthbook.js.map +1 -1
- package/dist/experiments/index.d.ts +3 -3
- package/dist/experiments/index.js +1 -1
- package/dist/experiments/registry.d.ts +2 -2
- package/dist/experiments/registry.js +2 -2
- package/dist/experiments/types.d.ts +5 -1
- package/dist/fetchers/cdnFetcher.d.ts +1 -1
- package/dist/fetchers/cdnFetcher.js +4 -8
- package/dist/fetchers/cdnFetcher.js.map +1 -1
- package/dist/fetchers/experimentsFetcher.d.ts +2 -2
- package/dist/fetchers/experimentsFetcher.js +7 -7
- package/dist/fetchers/experimentsFetcher.js.map +1 -1
- package/dist/fetchers/index.d.ts +3 -3
- package/dist/fetchers/index.js +2 -2
- package/dist/fetchers/index.js.map +1 -1
- package/dist/fetchers/registry.d.ts +1 -1
- package/dist/fetchers/registry.js +4 -4
- package/dist/fetchers/types.d.ts +1 -1
- package/dist/hooks/useCanvasOverlays.d.ts +8 -5
- package/dist/hooks/useCanvasOverlays.js +66 -17
- package/dist/hooks/useCanvasOverlays.js.map +1 -1
- package/dist/hooks/useHostPatches.d.ts +2 -2
- package/dist/hooks/useHostPatches.js +8 -8
- package/dist/hooks/useHostPatches.js.map +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +9 -9
- package/dist/hooks/useShadowCanvasConfig.js +24 -8
- package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
- package/dist/hostPatcher/core/patcher.d.ts +1 -1
- package/dist/hostPatcher/core/patcher.js +18 -9
- package/dist/hostPatcher/core/patcher.js.map +1 -1
- package/dist/hostPatcher/core/sanitizer.js +24 -3
- package/dist/hostPatcher/core/sanitizer.js.map +1 -1
- package/dist/hostPatcher/policy/defaultPolicy.js +15 -5
- package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
- package/dist/hostPatcher/utils/anchors.js +4 -6
- package/dist/hostPatcher/utils/anchors.js.map +1 -1
- package/dist/index.d.ts +34 -21
- package/dist/index.js +46 -19
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +29 -0
- package/dist/logger.js +81 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics/index.d.ts +1 -1
- package/dist/metrics/index.js +1 -1
- package/dist/metrics/sessionMetrics.d.ts +1 -1
- package/dist/metrics/sessionMetrics.js +6 -6
- package/dist/overlays/fetcher.d.ts +2 -2
- package/dist/overlays/fetcher.js +4 -4
- package/dist/overlays/recipeRegistry.js +2 -2
- package/dist/overlays/recipeRegistry.js.map +1 -1
- package/dist/overlays/runtime/anchor/resolve.js +1 -1
- package/dist/overlays/runtime/anchor/resolve.js.map +1 -1
- package/dist/overlays/runtime/index.d.ts +7 -7
- package/dist/overlays/runtime/index.js +7 -7
- package/dist/overlays/runtime/overlay/highlight.js +39 -39
- package/dist/overlays/runtime/overlay/highlight.js.map +1 -1
- package/dist/overlays/runtime/overlay/modal.js +5 -5
- package/dist/overlays/runtime/overlay/modal.js.map +1 -1
- package/dist/overlays/runtime/overlay/root.js +1 -1
- package/dist/overlays/runtime/overlay/runner.js +70 -23
- package/dist/overlays/runtime/overlay/runner.js.map +1 -1
- package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -1
- package/dist/overlays/runtime/overlay/tooltip.js +10 -10
- package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
- package/dist/overlays/runtime/utils/dom.js +4 -1
- package/dist/overlays/runtime/utils/dom.js.map +1 -1
- package/dist/overlays/schema.d.ts +98 -98
- package/dist/overlays/schema.js +12 -8
- package/dist/overlays/schema.js.map +1 -1
- package/dist/react.d.ts +7 -7
- package/dist/react.js +4 -4
- package/dist/react.js.map +1 -1
- package/dist/render/RenderContext.d.ts +2 -2
- package/dist/render/RenderContext.js +5 -5
- package/dist/render/RenderContext.js.map +1 -1
- package/dist/render/index.d.ts +3 -3
- package/dist/render/index.js +1 -1
- package/dist/render/types.d.ts +4 -4
- package/dist/runtime.d.ts +110 -0
- package/dist/runtime.js +206 -0
- package/dist/runtime.js.map +1 -0
- package/dist/smart-canvas.esm.js +155 -78
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +44390 -37343
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +156 -78
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/state/StateStore.d.ts +41 -0
- package/dist/state/StateStore.js +170 -0
- package/dist/state/StateStore.js.map +1 -0
- package/dist/state/helpers/cooldowns.d.ts +7 -0
- package/dist/state/helpers/cooldowns.js +31 -0
- package/dist/state/helpers/cooldowns.js.map +1 -0
- package/dist/state/helpers/dismissals.d.ts +7 -0
- package/dist/state/helpers/dismissals.js +34 -0
- package/dist/state/helpers/dismissals.js.map +1 -0
- package/dist/state/helpers/frequency.d.ts +8 -0
- package/dist/state/helpers/frequency.js +43 -0
- package/dist/state/helpers/frequency.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/schema.d.ts +49 -0
- package/dist/state/schema.js +25 -0
- package/dist/state/schema.js.map +1 -0
- package/dist/state/types.d.ts +137 -0
- package/dist/state/types.js +9 -0
- package/dist/state/types.js.map +1 -0
- package/dist/store/example.d.ts +1 -0
- package/dist/store/example.js +43 -0
- package/dist/store/example.js.map +1 -0
- package/dist/store/mini-effector.d.ts +46 -0
- package/dist/store/mini-effector.js +88 -0
- package/dist/store/mini-effector.js.map +1 -0
- package/dist/surfaces/Surfaces.d.ts +11 -0
- package/dist/surfaces/Surfaces.js +361 -0
- package/dist/surfaces/Surfaces.js.map +1 -0
- package/dist/surfaces/index.d.ts +9 -0
- package/dist/surfaces/index.js +12 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/positioning.d.ts +50 -0
- package/dist/surfaces/positioning.js +228 -0
- package/dist/surfaces/positioning.js.map +1 -0
- package/dist/surfaces/types.d.ts +167 -0
- package/dist/surfaces/types.js +23 -0
- package/dist/surfaces/types.js.map +1 -0
- package/dist/telemetry/adapters/noop.d.ts +12 -0
- package/dist/telemetry/adapters/noop.js +42 -0
- package/dist/telemetry/adapters/noop.js.map +1 -0
- package/dist/telemetry/adapters/posthog.d.ts +9 -3
- package/dist/telemetry/adapters/posthog.js +36 -14
- package/dist/telemetry/adapters/posthog.js.map +1 -1
- package/dist/telemetry/index.d.ts +4 -3
- package/dist/telemetry/index.js +3 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/registry.d.ts +2 -2
- package/dist/telemetry/registry.js +4 -2
- package/dist/telemetry/registry.js.map +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/theme/ThemeProvider.d.ts +2 -2
- package/dist/theme/ThemeProvider.js +21 -21
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/defaultTheme.d.ts +2 -2
- package/dist/theme/defaultTheme.js +111 -111
- package/dist/theme/defaultTheme.js.map +1 -1
- package/dist/theme/extractHostTheme.d.ts +1 -1
- package/dist/theme/extractHostTheme.js +42 -44
- package/dist/theme/extractHostTheme.js.map +1 -1
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.js +3 -3
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/types.d.ts +2 -2
- package/dist/token.d.ts +2 -0
- package/dist/token.js +3 -6
- package/dist/token.js.map +1 -1
- package/dist/types-only.d.ts +32 -0
- package/dist/types-only.js +11 -0
- package/dist/types-only.js.map +1 -0
- package/dist/types.d.ts +95 -54
- package/dist/types.js +15 -2
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +13 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/dist/widgets/WidgetRegistry.d.ts +139 -0
- package/dist/widgets/WidgetRegistry.js +182 -0
- package/dist/widgets/WidgetRegistry.js.map +1 -0
- package/dist/widgets/index.d.ts +7 -0
- package/dist/widgets/index.js +7 -0
- package/dist/widgets/index.js.map +1 -0
- package/package.json +27 -11
- package/schema/canvas-config.schema.json +666 -227
- package/schema/runtime-context.schema.json +127 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Events module exports.
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './schema';
|
|
6
|
+
export { EventBus, createEventBus } from './EventBus';
|
|
7
|
+
export type { EventBusOptions } from './EventBus';
|
|
8
|
+
export { normalizePostHogEvent, shouldNormalizeEvent, createPostHogNormalizer, } from './normalizers/posthog';
|
|
9
|
+
export { CanvasEvents } from './normalizers/canvas';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Events module exports.
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './schema';
|
|
6
|
+
export { EventBus, createEventBus } from './EventBus';
|
|
7
|
+
// Normalizers
|
|
8
|
+
export { normalizePostHogEvent, shouldNormalizeEvent, createPostHogNormalizer, } from './normalizers/posthog';
|
|
9
|
+
export { CanvasEvents } from './normalizers/canvas';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGtD,cAAc;AACd,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Event Normalizer
|
|
3
|
+
*
|
|
4
|
+
* Transforms Smart Canvas events into normalized events for the EventBus.
|
|
5
|
+
*/
|
|
6
|
+
import type { NormalizedEvent } from '../types';
|
|
7
|
+
import type { CanvasSurface } from '../../telemetry/types';
|
|
8
|
+
/**
|
|
9
|
+
* Canvas opened event.
|
|
10
|
+
*/
|
|
11
|
+
export declare function canvasOpened(surface: CanvasSurface): NormalizedEvent;
|
|
12
|
+
/**
|
|
13
|
+
* Canvas closed event.
|
|
14
|
+
*/
|
|
15
|
+
export declare function canvasClosed(surface: CanvasSurface): NormalizedEvent;
|
|
16
|
+
/**
|
|
17
|
+
* Tile viewed event.
|
|
18
|
+
*/
|
|
19
|
+
export declare function tileViewed(tileId: string, surface: CanvasSurface): NormalizedEvent;
|
|
20
|
+
/**
|
|
21
|
+
* Tile expanded event.
|
|
22
|
+
*/
|
|
23
|
+
export declare function tileExpanded(tileId: string, surface: CanvasSurface): NormalizedEvent;
|
|
24
|
+
/**
|
|
25
|
+
* Tile collapsed event.
|
|
26
|
+
*/
|
|
27
|
+
export declare function tileCollapsed(tileId: string, surface: CanvasSurface): NormalizedEvent;
|
|
28
|
+
/**
|
|
29
|
+
* Tile action event.
|
|
30
|
+
*/
|
|
31
|
+
export declare function tileAction(tileId: string, actionId: string, surface: CanvasSurface): NormalizedEvent;
|
|
32
|
+
/**
|
|
33
|
+
* Overlay/tour started event.
|
|
34
|
+
*/
|
|
35
|
+
export declare function overlayStarted(recipeId: string, recipeName?: string): NormalizedEvent;
|
|
36
|
+
/**
|
|
37
|
+
* Overlay/tour completed event.
|
|
38
|
+
*/
|
|
39
|
+
export declare function overlayCompleted(recipeId: string, recipeName?: string): NormalizedEvent;
|
|
40
|
+
/**
|
|
41
|
+
* Overlay/tour dismissed event.
|
|
42
|
+
*/
|
|
43
|
+
export declare function overlayDismissed(recipeId: string, recipeName?: string, stepIndex?: number): NormalizedEvent;
|
|
44
|
+
/**
|
|
45
|
+
* Overlay step viewed event.
|
|
46
|
+
*/
|
|
47
|
+
export declare function overlayStepViewed(recipeId: string, stepIndex: number, stepTitle?: string): NormalizedEvent;
|
|
48
|
+
/**
|
|
49
|
+
* Create a custom canvas event.
|
|
50
|
+
*/
|
|
51
|
+
export declare function customCanvasEvent(name: string, props?: Record<string, unknown>): NormalizedEvent;
|
|
52
|
+
/**
|
|
53
|
+
* Canvas event factory for easy event creation.
|
|
54
|
+
*/
|
|
55
|
+
export declare const CanvasEvents: {
|
|
56
|
+
canvasOpened: typeof canvasOpened;
|
|
57
|
+
canvasClosed: typeof canvasClosed;
|
|
58
|
+
tileViewed: typeof tileViewed;
|
|
59
|
+
tileExpanded: typeof tileExpanded;
|
|
60
|
+
tileCollapsed: typeof tileCollapsed;
|
|
61
|
+
tileAction: typeof tileAction;
|
|
62
|
+
overlayStarted: typeof overlayStarted;
|
|
63
|
+
overlayCompleted: typeof overlayCompleted;
|
|
64
|
+
overlayDismissed: typeof overlayDismissed;
|
|
65
|
+
overlayStepViewed: typeof overlayStepViewed;
|
|
66
|
+
custom: typeof customCanvasEvent;
|
|
67
|
+
};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { StandardEvents, EVENT_SCHEMA_VERSION } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Create a canvas event with standard metadata.
|
|
4
|
+
*/
|
|
5
|
+
function createCanvasEvent(name, props) {
|
|
6
|
+
return {
|
|
7
|
+
ts: Date.now(),
|
|
8
|
+
name,
|
|
9
|
+
source: 'canvas',
|
|
10
|
+
props,
|
|
11
|
+
schemaVersion: EVENT_SCHEMA_VERSION,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Canvas opened event.
|
|
16
|
+
*/
|
|
17
|
+
export function canvasOpened(surface) {
|
|
18
|
+
return createCanvasEvent(StandardEvents.CANVAS_OPENED, { surface });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Canvas closed event.
|
|
22
|
+
*/
|
|
23
|
+
export function canvasClosed(surface) {
|
|
24
|
+
return createCanvasEvent(StandardEvents.CANVAS_CLOSED, { surface });
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Tile viewed event.
|
|
28
|
+
*/
|
|
29
|
+
export function tileViewed(tileId, surface) {
|
|
30
|
+
return createCanvasEvent(StandardEvents.TILE_VIEWED, { tileId, surface });
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Tile expanded event.
|
|
34
|
+
*/
|
|
35
|
+
export function tileExpanded(tileId, surface) {
|
|
36
|
+
return createCanvasEvent(StandardEvents.TILE_EXPANDED, { tileId, surface });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Tile collapsed event.
|
|
40
|
+
*/
|
|
41
|
+
export function tileCollapsed(tileId, surface) {
|
|
42
|
+
return createCanvasEvent(StandardEvents.TILE_COLLAPSED, { tileId, surface });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Tile action event.
|
|
46
|
+
*/
|
|
47
|
+
export function tileAction(tileId, actionId, surface) {
|
|
48
|
+
return createCanvasEvent(StandardEvents.TILE_ACTION, {
|
|
49
|
+
tileId,
|
|
50
|
+
actionId,
|
|
51
|
+
surface,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Overlay/tour started event.
|
|
56
|
+
*/
|
|
57
|
+
export function overlayStarted(recipeId, recipeName) {
|
|
58
|
+
return createCanvasEvent(StandardEvents.OVERLAY_STARTED, {
|
|
59
|
+
recipeId,
|
|
60
|
+
recipeName,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Overlay/tour completed event.
|
|
65
|
+
*/
|
|
66
|
+
export function overlayCompleted(recipeId, recipeName) {
|
|
67
|
+
return createCanvasEvent(StandardEvents.OVERLAY_COMPLETED, {
|
|
68
|
+
recipeId,
|
|
69
|
+
recipeName,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Overlay/tour dismissed event.
|
|
74
|
+
*/
|
|
75
|
+
export function overlayDismissed(recipeId, recipeName, stepIndex) {
|
|
76
|
+
return createCanvasEvent(StandardEvents.OVERLAY_DISMISSED, {
|
|
77
|
+
recipeId,
|
|
78
|
+
recipeName,
|
|
79
|
+
stepIndex,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Overlay step viewed event.
|
|
84
|
+
*/
|
|
85
|
+
export function overlayStepViewed(recipeId, stepIndex, stepTitle) {
|
|
86
|
+
return createCanvasEvent(StandardEvents.OVERLAY_STEP_VIEWED, {
|
|
87
|
+
recipeId,
|
|
88
|
+
stepIndex,
|
|
89
|
+
stepTitle,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create a custom canvas event.
|
|
94
|
+
*/
|
|
95
|
+
export function customCanvasEvent(name, props) {
|
|
96
|
+
// Prefix custom events with "canvas." if not already prefixed
|
|
97
|
+
const eventName = name.startsWith('canvas.') ? name : `canvas.${name}`;
|
|
98
|
+
return createCanvasEvent(eventName, props);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Canvas event factory for easy event creation.
|
|
102
|
+
*/
|
|
103
|
+
export const CanvasEvents = {
|
|
104
|
+
canvasOpened,
|
|
105
|
+
canvasClosed,
|
|
106
|
+
tileViewed,
|
|
107
|
+
tileExpanded,
|
|
108
|
+
tileCollapsed,
|
|
109
|
+
tileAction,
|
|
110
|
+
overlayStarted,
|
|
111
|
+
overlayCompleted,
|
|
112
|
+
overlayDismissed,
|
|
113
|
+
overlayStepViewed,
|
|
114
|
+
custom: customCanvasEvent,
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../../src/events/normalizers/canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostHog Event Normalizer
|
|
3
|
+
*
|
|
4
|
+
* Transforms PostHog autocapture events into normalized events for the EventBus.
|
|
5
|
+
*
|
|
6
|
+
* This module is automatically wired up during `Syntro.init()` when PostHog
|
|
7
|
+
* credentials are provided in the token. The flow is:
|
|
8
|
+
*
|
|
9
|
+
* 1. PostHog captures user interactions (clicks, scrolls, navigation, etc.)
|
|
10
|
+
* 2. PostHog's `eventCaptured` callback fires
|
|
11
|
+
* 3. `createPostHogNormalizer()` transforms the event to a NormalizedEvent
|
|
12
|
+
* 4. The normalized event is published to the EventBus
|
|
13
|
+
*
|
|
14
|
+
* This allows canvas components and decision strategies to react to user
|
|
15
|
+
* interactions with the main webapp, not just canvas-specific events.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // In bootstrap.ts (already wired up automatically)
|
|
20
|
+
* const normalizer = createPostHogNormalizer((event) => {
|
|
21
|
+
* eventBus.publishEvent(event);
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // PostHog adapter calls normalizer on each capture
|
|
25
|
+
* posthog.on('eventCaptured', normalizer);
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @see RUNTIME_V2_REFERENCE.md for the full event mapping table
|
|
29
|
+
*/
|
|
30
|
+
import type { NormalizedEvent } from '../types';
|
|
31
|
+
/**
|
|
32
|
+
* PostHog event structure (simplified).
|
|
33
|
+
*/
|
|
34
|
+
interface PostHogEvent {
|
|
35
|
+
event: string;
|
|
36
|
+
properties?: Record<string, unknown>;
|
|
37
|
+
timestamp?: string | number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Normalize a PostHog event into a NormalizedEvent.
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizePostHogEvent(phEvent: PostHogEvent): NormalizedEvent;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a PostHog event should be normalized.
|
|
45
|
+
* Filters out internal/system events that aren't useful for adaptives.
|
|
46
|
+
*/
|
|
47
|
+
export declare function shouldNormalizeEvent(phEvent: PostHogEvent): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Create a function that hooks into PostHog's onCapture callback
|
|
50
|
+
* and normalizes events into the EventBus.
|
|
51
|
+
*/
|
|
52
|
+
export declare function createPostHogNormalizer(publishFn: (event: NormalizedEvent) => void): (eventName: string, properties?: Record<string, unknown>) => void;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { StandardEvents, EVENT_SCHEMA_VERSION } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Map PostHog event names to normalized event names.
|
|
4
|
+
*/
|
|
5
|
+
const POSTHOG_EVENT_MAP = {
|
|
6
|
+
// Autocapture events
|
|
7
|
+
$autocapture: 'ui.click', // Default autocapture is usually clicks
|
|
8
|
+
$click: StandardEvents.UI_CLICK,
|
|
9
|
+
$scroll: StandardEvents.UI_SCROLL,
|
|
10
|
+
$input: StandardEvents.UI_INPUT,
|
|
11
|
+
$change: StandardEvents.UI_CHANGE,
|
|
12
|
+
$submit: StandardEvents.UI_SUBMIT,
|
|
13
|
+
// Navigation events
|
|
14
|
+
$pageview: StandardEvents.NAV_PAGE_VIEW,
|
|
15
|
+
$pageleave: StandardEvents.NAV_PAGE_LEAVE,
|
|
16
|
+
// Session events
|
|
17
|
+
$session_start: 'session.start',
|
|
18
|
+
// Identify events
|
|
19
|
+
$identify: 'user.identify',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Extract the normalized event name from a PostHog event.
|
|
23
|
+
*/
|
|
24
|
+
function getEventName(phEvent) {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
const eventName = phEvent.event;
|
|
27
|
+
// Defensive guard: PostHog's eventCaptured can emit non-string event names
|
|
28
|
+
if (typeof eventName !== 'string') {
|
|
29
|
+
return 'posthog.unknown';
|
|
30
|
+
}
|
|
31
|
+
// Check mapped events
|
|
32
|
+
if (POSTHOG_EVENT_MAP[eventName]) {
|
|
33
|
+
return POSTHOG_EVENT_MAP[eventName];
|
|
34
|
+
}
|
|
35
|
+
// For autocapture, check the element type to determine the action
|
|
36
|
+
if (eventName === '$autocapture') {
|
|
37
|
+
const tagName = (_a = phEvent.properties) === null || _a === void 0 ? void 0 : _a.$tag_name;
|
|
38
|
+
const eventType = (_b = phEvent.properties) === null || _b === void 0 ? void 0 : _b.$event_type;
|
|
39
|
+
if (eventType === 'submit')
|
|
40
|
+
return StandardEvents.UI_SUBMIT;
|
|
41
|
+
if (eventType === 'change')
|
|
42
|
+
return StandardEvents.UI_CHANGE;
|
|
43
|
+
if (tagName === 'input' || tagName === 'textarea')
|
|
44
|
+
return StandardEvents.UI_INPUT;
|
|
45
|
+
return StandardEvents.UI_CLICK;
|
|
46
|
+
}
|
|
47
|
+
// For custom events, prefix with "posthog." to namespace them
|
|
48
|
+
if (!eventName.startsWith('$')) {
|
|
49
|
+
return `posthog.${eventName}`;
|
|
50
|
+
}
|
|
51
|
+
// Pass through other $ events as-is but normalized
|
|
52
|
+
return eventName.replace('$', 'posthog.');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Extract relevant properties from a PostHog event.
|
|
56
|
+
*/
|
|
57
|
+
function extractProps(phEvent) {
|
|
58
|
+
const props = {};
|
|
59
|
+
const phProps = phEvent.properties || {};
|
|
60
|
+
// Element info
|
|
61
|
+
if (phProps.$tag_name)
|
|
62
|
+
props.tagName = phProps.$tag_name;
|
|
63
|
+
if (phProps.$el_text)
|
|
64
|
+
props.elementText = phProps.$el_text;
|
|
65
|
+
if (phProps.$elements)
|
|
66
|
+
props.elements = phProps.$elements;
|
|
67
|
+
// URL/page info
|
|
68
|
+
if (phProps.$current_url)
|
|
69
|
+
props.url = phProps.$current_url;
|
|
70
|
+
if (phProps.$pathname)
|
|
71
|
+
props.pathname = phProps.$pathname;
|
|
72
|
+
if (phProps.$host)
|
|
73
|
+
props.host = phProps.$host;
|
|
74
|
+
// Device/viewport info
|
|
75
|
+
if (phProps.$viewport_width)
|
|
76
|
+
props.viewportWidth = phProps.$viewport_width;
|
|
77
|
+
if (phProps.$viewport_height)
|
|
78
|
+
props.viewportHeight = phProps.$viewport_height;
|
|
79
|
+
// Session info
|
|
80
|
+
if (phProps.$session_id)
|
|
81
|
+
props.sessionId = phProps.$session_id;
|
|
82
|
+
// Scroll-specific properties
|
|
83
|
+
if (phProps.$scroll_depth)
|
|
84
|
+
props.scrollDepth = phProps.$scroll_depth;
|
|
85
|
+
if (phProps.$scroll_percentage)
|
|
86
|
+
props.scrollPercentage = phProps.$scroll_percentage;
|
|
87
|
+
// Original event name
|
|
88
|
+
props.originalEvent = phEvent.event;
|
|
89
|
+
return props;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Normalize a PostHog event into a NormalizedEvent.
|
|
93
|
+
*/
|
|
94
|
+
export function normalizePostHogEvent(phEvent) {
|
|
95
|
+
// Parse timestamp
|
|
96
|
+
let ts;
|
|
97
|
+
if (typeof phEvent.timestamp === 'number') {
|
|
98
|
+
ts = phEvent.timestamp;
|
|
99
|
+
}
|
|
100
|
+
else if (typeof phEvent.timestamp === 'string') {
|
|
101
|
+
ts = new Date(phEvent.timestamp).getTime();
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
ts = Date.now();
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
ts,
|
|
108
|
+
name: getEventName(phEvent),
|
|
109
|
+
source: 'posthog',
|
|
110
|
+
props: extractProps(phEvent),
|
|
111
|
+
schemaVersion: EVENT_SCHEMA_VERSION,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a PostHog event should be normalized.
|
|
116
|
+
* Filters out internal/system events that aren't useful for adaptives.
|
|
117
|
+
*/
|
|
118
|
+
export function shouldNormalizeEvent(phEvent) {
|
|
119
|
+
const eventName = phEvent.event;
|
|
120
|
+
if (typeof eventName !== 'string')
|
|
121
|
+
return false;
|
|
122
|
+
// Skip internal PostHog events
|
|
123
|
+
const skipEvents = [
|
|
124
|
+
'$feature_flag_called',
|
|
125
|
+
'$feature_flags',
|
|
126
|
+
'$groups',
|
|
127
|
+
'$groupidentify',
|
|
128
|
+
'$set',
|
|
129
|
+
'$set_once',
|
|
130
|
+
'$unset',
|
|
131
|
+
'$create_alias',
|
|
132
|
+
'$capture_metrics',
|
|
133
|
+
'$performance_event',
|
|
134
|
+
'$web_vitals',
|
|
135
|
+
'$exception',
|
|
136
|
+
'$dead_click',
|
|
137
|
+
'$heatmap',
|
|
138
|
+
];
|
|
139
|
+
if (skipEvents.includes(eventName)) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create a function that hooks into PostHog's onCapture callback
|
|
146
|
+
* and normalizes events into the EventBus.
|
|
147
|
+
*/
|
|
148
|
+
export function createPostHogNormalizer(publishFn) {
|
|
149
|
+
return (eventName, properties) => {
|
|
150
|
+
if (typeof eventName !== 'string')
|
|
151
|
+
return;
|
|
152
|
+
const phEvent = {
|
|
153
|
+
event: eventName,
|
|
154
|
+
properties,
|
|
155
|
+
timestamp: Date.now(),
|
|
156
|
+
};
|
|
157
|
+
if (shouldNormalizeEvent(phEvent)) {
|
|
158
|
+
const normalizedEvent = normalizePostHogEvent(phEvent);
|
|
159
|
+
publishFn(normalizedEvent);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=posthog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/events/normalizers/posthog.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAWhE;;GAEG;AACH,MAAM,iBAAiB,GAA2B;IAChD,qBAAqB;IACrB,YAAY,EAAE,UAAU,EAAE,wCAAwC;IAClE,MAAM,EAAE,cAAc,CAAC,QAAQ;IAC/B,OAAO,EAAE,cAAc,CAAC,SAAS;IACjC,MAAM,EAAE,cAAc,CAAC,QAAQ;IAC/B,OAAO,EAAE,cAAc,CAAC,SAAS;IACjC,OAAO,EAAE,cAAc,CAAC,SAAS;IAEjC,oBAAoB;IACpB,SAAS,EAAE,cAAc,CAAC,aAAa;IACvC,UAAU,EAAE,cAAc,CAAC,cAAc;IAEzC,iBAAiB;IACjB,cAAc,EAAE,eAAe;IAE/B,kBAAkB;IAClB,SAAS,EAAE,eAAe;CAC3B,CAAC;AAEF;;GAEG;AACH,SAAS,YAAY,CAAC,OAAqB;;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,2EAA2E;IAC3E,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,sBAAsB;IACtB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,kEAAkE;IAClE,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,UAAU,0CAAE,SAA+B,CAAC;QACpE,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,UAAU,0CAAE,WAAiC,CAAC;QAExE,IAAI,SAAS,KAAK,QAAQ;YAAE,OAAO,cAAc,CAAC,SAAS,CAAC;QAC5D,IAAI,SAAS,KAAK,QAAQ;YAAE,OAAO,cAAc,CAAC,SAAS,CAAC;QAC5D,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,UAAU;YAAE,OAAO,cAAc,CAAC,QAAQ,CAAC;QAElF,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,mDAAmD;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAqB;IACzC,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAEzC,eAAe;IACf,IAAI,OAAO,CAAC,SAAS;QAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IACzD,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC3D,IAAI,OAAO,CAAC,SAAS;QAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAE1D,gBAAgB;IAChB,IAAI,OAAO,CAAC,YAAY;QAAE,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3D,IAAI,OAAO,CAAC,SAAS;QAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAC1D,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAE9C,uBAAuB;IACvB,IAAI,OAAO,CAAC,eAAe;QAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAC3E,IAAI,OAAO,CAAC,gBAAgB;QAAE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE9E,eAAe;IACf,IAAI,OAAO,CAAC,WAAW;QAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAE/D,6BAA6B;IAC7B,IAAI,OAAO,CAAC,aAAa;QAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IACrE,IAAI,OAAO,CAAC,kBAAkB;QAAE,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEpF,sBAAsB;IACtB,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAEpC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,kBAAkB;IAClB,IAAI,EAAU,CAAC;IACf,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1C,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjD,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,OAAO;QACL,EAAE;QACF,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;QAC3B,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;QAC5B,aAAa,EAAE,oBAAoB;KACpC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,UAAU,GAAG;QACjB,sBAAsB;QACtB,gBAAgB;QAChB,SAAS;QACT,gBAAgB;QAChB,MAAM;QACN,WAAW;QACX,QAAQ;QACR,eAAe;QACf,kBAAkB;QAClB,oBAAoB;QACpB,aAAa;QACb,YAAY;QACZ,aAAa;QACb,UAAU;KACX,CAAC;IAEF,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA2C;IAE3C,OAAO,CAAC,SAAiB,EAAE,UAAoC,EAAE,EAAE;QACjE,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,OAAO;QAC1C,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,SAAS;YAChB,UAAU;YACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACvD,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for event validation.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export declare const EventSourceZ: z.ZodEnum<["posthog", "canvas", "derived"]>;
|
|
6
|
+
export declare const NormalizedEventZ: z.ZodObject<{
|
|
7
|
+
ts: z.ZodNumber;
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
source: z.ZodEnum<["posthog", "canvas", "derived"]>;
|
|
10
|
+
props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
11
|
+
schemaVersion: z.ZodString;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
name: string;
|
|
14
|
+
source: "posthog" | "canvas" | "derived";
|
|
15
|
+
schemaVersion: string;
|
|
16
|
+
ts: number;
|
|
17
|
+
props?: Record<string, unknown> | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
name: string;
|
|
20
|
+
source: "posthog" | "canvas" | "derived";
|
|
21
|
+
schemaVersion: string;
|
|
22
|
+
ts: number;
|
|
23
|
+
props?: Record<string, unknown> | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const EventFilterZ: z.ZodObject<{
|
|
26
|
+
names: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
27
|
+
patterns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
28
|
+
sources: z.ZodOptional<z.ZodArray<z.ZodEnum<["posthog", "canvas", "derived"]>, "many">>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
names?: string[] | undefined;
|
|
31
|
+
patterns?: string[] | undefined;
|
|
32
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
names?: string[] | undefined;
|
|
35
|
+
patterns?: string[] | undefined;
|
|
36
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Validate a NormalizedEvent object.
|
|
40
|
+
*/
|
|
41
|
+
export declare function validateNormalizedEvent(data: unknown): z.SafeParseReturnType<{
|
|
42
|
+
name: string;
|
|
43
|
+
source: "posthog" | "canvas" | "derived";
|
|
44
|
+
schemaVersion: string;
|
|
45
|
+
ts: number;
|
|
46
|
+
props?: Record<string, unknown> | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
name: string;
|
|
49
|
+
source: "posthog" | "canvas" | "derived";
|
|
50
|
+
schemaVersion: string;
|
|
51
|
+
ts: number;
|
|
52
|
+
props?: Record<string, unknown> | undefined;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Validate an EventFilter object.
|
|
56
|
+
*/
|
|
57
|
+
export declare function validateEventFilter(data: unknown): z.SafeParseReturnType<{
|
|
58
|
+
names?: string[] | undefined;
|
|
59
|
+
patterns?: string[] | undefined;
|
|
60
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
61
|
+
}, {
|
|
62
|
+
names?: string[] | undefined;
|
|
63
|
+
patterns?: string[] | undefined;
|
|
64
|
+
sources?: ("posthog" | "canvas" | "derived")[] | undefined;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Type inference from Zod schema.
|
|
68
|
+
*/
|
|
69
|
+
export type NormalizedEventSchema = z.infer<typeof NormalizedEventZ>;
|
|
70
|
+
export type EventFilterSchema = z.infer<typeof EventFilterZ>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for event validation.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export const EventSourceZ = z.enum(['posthog', 'canvas', 'derived']);
|
|
6
|
+
export const NormalizedEventZ = z.object({
|
|
7
|
+
ts: z.number(),
|
|
8
|
+
name: z.string(),
|
|
9
|
+
source: EventSourceZ,
|
|
10
|
+
props: z.record(z.unknown()).optional(),
|
|
11
|
+
schemaVersion: z.string(),
|
|
12
|
+
});
|
|
13
|
+
export const EventFilterZ = z.object({
|
|
14
|
+
names: z.array(z.string()).optional(),
|
|
15
|
+
patterns: z.array(z.string()).optional(),
|
|
16
|
+
sources: z.array(EventSourceZ).optional(),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Validate a NormalizedEvent object.
|
|
20
|
+
*/
|
|
21
|
+
export function validateNormalizedEvent(data) {
|
|
22
|
+
return NormalizedEventZ.safeParse(data);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validate an EventFilter object.
|
|
26
|
+
*/
|
|
27
|
+
export function validateEventFilter(data) {
|
|
28
|
+
return EventFilterZ.safeParse(data);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/events/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACnD,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Bus Types
|
|
3
|
+
*
|
|
4
|
+
* The EventBus provides a normalized event stream that unifies events from
|
|
5
|
+
* PostHog autocapture, Canvas events, and derived behavioral signals.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Event sources in the runtime.
|
|
9
|
+
*/
|
|
10
|
+
export type EventSource = 'posthog' | 'canvas' | 'derived';
|
|
11
|
+
/**
|
|
12
|
+
* Normalized event structure for the event bus.
|
|
13
|
+
*/
|
|
14
|
+
export interface NormalizedEvent {
|
|
15
|
+
/** Event timestamp (milliseconds since epoch) */
|
|
16
|
+
ts: number;
|
|
17
|
+
/** Normalized event name (e.g., "ui.click", "canvas.opened") */
|
|
18
|
+
name: string;
|
|
19
|
+
/** Event source */
|
|
20
|
+
source: EventSource;
|
|
21
|
+
/** Event properties/payload */
|
|
22
|
+
props?: Record<string, unknown>;
|
|
23
|
+
/** Schema version for forward compatibility */
|
|
24
|
+
schemaVersion: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Event filter for subscriptions.
|
|
28
|
+
*/
|
|
29
|
+
export interface EventFilter {
|
|
30
|
+
/** Filter by event names (exact match) */
|
|
31
|
+
names?: string[];
|
|
32
|
+
/** Filter by event name patterns (regex) */
|
|
33
|
+
patterns?: string[];
|
|
34
|
+
/** Filter by sources */
|
|
35
|
+
sources?: EventSource[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Callback for event subscriptions.
|
|
39
|
+
*/
|
|
40
|
+
export type EventCallback = (event: NormalizedEvent) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Unsubscribe function returned by subscribe().
|
|
43
|
+
*/
|
|
44
|
+
export type EventUnsubscribe = () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Standard event names used by the runtime.
|
|
47
|
+
*/
|
|
48
|
+
export declare const StandardEvents: {
|
|
49
|
+
readonly UI_CLICK: "ui.click";
|
|
50
|
+
readonly UI_SCROLL: "ui.scroll";
|
|
51
|
+
readonly UI_INPUT: "ui.input";
|
|
52
|
+
readonly UI_CHANGE: "ui.change";
|
|
53
|
+
readonly UI_SUBMIT: "ui.submit";
|
|
54
|
+
readonly NAV_PAGE_VIEW: "nav.page_view";
|
|
55
|
+
readonly NAV_PAGE_LEAVE: "nav.page_leave";
|
|
56
|
+
readonly CANVAS_OPENED: "canvas.opened";
|
|
57
|
+
readonly CANVAS_CLOSED: "canvas.closed";
|
|
58
|
+
readonly TILE_VIEWED: "tile.viewed";
|
|
59
|
+
readonly TILE_EXPANDED: "tile.expanded";
|
|
60
|
+
readonly TILE_COLLAPSED: "tile.collapsed";
|
|
61
|
+
readonly TILE_ACTION: "tile.action";
|
|
62
|
+
readonly OVERLAY_STARTED: "overlay.started";
|
|
63
|
+
readonly OVERLAY_COMPLETED: "overlay.completed";
|
|
64
|
+
readonly OVERLAY_DISMISSED: "overlay.dismissed";
|
|
65
|
+
readonly OVERLAY_STEP_VIEWED: "overlay.step_viewed";
|
|
66
|
+
readonly BEHAVIOR_RAGE_CLICK: "behavior.rage_click";
|
|
67
|
+
readonly BEHAVIOR_HESITATION: "behavior.hesitation";
|
|
68
|
+
readonly BEHAVIOR_CONFUSION: "behavior.confusion";
|
|
69
|
+
readonly ACTION_APPLIED: "action.applied";
|
|
70
|
+
readonly ACTION_REVERTED: "action.reverted";
|
|
71
|
+
readonly ACTION_FAILED: "action.failed";
|
|
72
|
+
readonly ACTION_CTA_CLICKED: "action.cta_clicked";
|
|
73
|
+
readonly SURFACE_MOUNTED: "surface.mounted";
|
|
74
|
+
readonly SURFACE_UNMOUNTED: "surface.unmounted";
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Current schema version for normalized events.
|
|
78
|
+
*/
|
|
79
|
+
export declare const EVENT_SCHEMA_VERSION = "1.0.0";
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Bus Types
|
|
3
|
+
*
|
|
4
|
+
* The EventBus provides a normalized event stream that unifies events from
|
|
5
|
+
* PostHog autocapture, Canvas events, and derived behavioral signals.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Standard event names used by the runtime.
|
|
9
|
+
*/
|
|
10
|
+
export const StandardEvents = {
|
|
11
|
+
// UI events (from PostHog autocapture)
|
|
12
|
+
UI_CLICK: 'ui.click',
|
|
13
|
+
UI_SCROLL: 'ui.scroll',
|
|
14
|
+
UI_INPUT: 'ui.input',
|
|
15
|
+
UI_CHANGE: 'ui.change',
|
|
16
|
+
UI_SUBMIT: 'ui.submit',
|
|
17
|
+
// Navigation events
|
|
18
|
+
NAV_PAGE_VIEW: 'nav.page_view',
|
|
19
|
+
NAV_PAGE_LEAVE: 'nav.page_leave',
|
|
20
|
+
// Canvas events
|
|
21
|
+
CANVAS_OPENED: 'canvas.opened',
|
|
22
|
+
CANVAS_CLOSED: 'canvas.closed',
|
|
23
|
+
TILE_VIEWED: 'tile.viewed',
|
|
24
|
+
TILE_EXPANDED: 'tile.expanded',
|
|
25
|
+
TILE_COLLAPSED: 'tile.collapsed',
|
|
26
|
+
TILE_ACTION: 'tile.action',
|
|
27
|
+
// Overlay/tour events
|
|
28
|
+
OVERLAY_STARTED: 'overlay.started',
|
|
29
|
+
OVERLAY_COMPLETED: 'overlay.completed',
|
|
30
|
+
OVERLAY_DISMISSED: 'overlay.dismissed',
|
|
31
|
+
OVERLAY_STEP_VIEWED: 'overlay.step_viewed',
|
|
32
|
+
// Derived behavioral signals (Phase 3)
|
|
33
|
+
BEHAVIOR_RAGE_CLICK: 'behavior.rage_click',
|
|
34
|
+
BEHAVIOR_HESITATION: 'behavior.hesitation',
|
|
35
|
+
BEHAVIOR_CONFUSION: 'behavior.confusion',
|
|
36
|
+
// Action events
|
|
37
|
+
ACTION_APPLIED: 'action.applied',
|
|
38
|
+
ACTION_REVERTED: 'action.reverted',
|
|
39
|
+
ACTION_FAILED: 'action.failed',
|
|
40
|
+
ACTION_CTA_CLICKED: 'action.cta_clicked',
|
|
41
|
+
// Surface events
|
|
42
|
+
SURFACE_MOUNTED: 'surface.mounted',
|
|
43
|
+
SURFACE_UNMOUNTED: 'surface.unmounted',
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Current schema version for normalized events.
|
|
47
|
+
*/
|
|
48
|
+
export const EVENT_SCHEMA_VERSION = '1.0.0';
|
|
49
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uCAAuC;IACvC,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IAEtB,oBAAoB;IACpB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAEhC,gBAAgB;IAChB,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAE1B,sBAAsB;IACtB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAE1C,uCAAuC;IACvC,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;IAExC,gBAAgB;IAChB,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IAExC,iBAAiB;IACjB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;CAC9B,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
|