@syntrologie/runtime-sdk 2.0.0 → 2.0.1-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 +232 -138
- package/README.md +76 -57
- package/dist/RuntimeProvider.d.ts +6 -6
- package/dist/RuntimeProvider.js +2 -3
- package/dist/RuntimeProvider.js.map +1 -1
- package/dist/SmartCanvasApp.d.ts +8 -8
- package/dist/SmartCanvasApp.js +16 -18
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/SmartCanvasElement.d.ts +5 -5
- package/dist/SmartCanvasElement.js +13 -13
- 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 +1 -1
- package/dist/actions/ActionEngine.js +24 -24
- package/dist/actions/ActionEngine.js.map +1 -1
- package/dist/actions/executors/index.d.ts +6 -6
- package/dist/actions/executors/index.js +22 -22
- package/dist/actions/executors/index.js.map +1 -1
- package/dist/actions/executors/tour.d.ts +1 -1
- package/dist/actions/executors/tour.js +19 -19
- package/dist/actions/executors/tour.js.map +1 -1
- package/dist/actions/index.d.ts +5 -5
- package/dist/actions/index.js +3 -3
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/types.d.ts +37 -37
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.js +195 -196
- package/dist/actions/validation.js.map +1 -1
- package/dist/antiFlicker.js +1 -1
- package/dist/api.d.ts +10 -10
- package/dist/api.js +11 -11
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.d.ts +2 -2
- package/dist/apps/AppContext.js +1 -1
- package/dist/apps/AppContext.js.map +1 -1
- package/dist/apps/AppLoader.d.ts +2 -2
- package/dist/apps/AppLoader.js +24 -24
- package/dist/apps/AppLoader.js.map +1 -1
- package/dist/apps/AppRegistry.d.ts +2 -2
- package/dist/apps/AppRegistry.js +28 -28
- package/dist/apps/AppRegistry.js.map +1 -1
- 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 +3 -3
- package/dist/apps/examples/gamification-app.example.js +94 -94
- package/dist/apps/examples/gamification-app.example.js.map +1 -1
- package/dist/apps/faq/index.js.map +3 -3
- package/dist/apps/gamification/index.js.map +3 -3
- package/dist/apps/index.d.ts +10 -10
- package/dist/apps/index.js +6 -6
- package/dist/apps/nav/index.js.map +3 -3
- package/dist/apps/types.d.ts +10 -10
- 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 +10 -10
- package/dist/bootstrap.js +54 -40
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
- package/dist/components/ShadowCanvasOverlay.js +117 -107
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.d.ts +5 -5
- package/dist/components/TileCard.js +174 -143
- 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/configFetcher.d.ts +2 -2
- package/dist/configFetcher.js +10 -7
- package/dist/configFetcher.js.map +1 -1
- package/dist/context/ContextManager.d.ts +3 -3
- package/dist/context/ContextManager.js +15 -15
- package/dist/context/ContextManager.js.map +1 -1
- package/dist/context/index.d.ts +4 -4
- package/dist/context/index.js +3 -3
- package/dist/context/schema.d.ts +1 -1
- package/dist/context/schema.js +1 -1
- package/dist/decisions/engine.d.ts +5 -5
- package/dist/decisions/engine.js +13 -13
- package/dist/decisions/index.d.ts +6 -6
- package/dist/decisions/index.js +5 -5
- package/dist/decisions/schema.d.ts +1 -1
- package/dist/decisions/schema.js +20 -20
- package/dist/decisions/strategies/rules.d.ts +1 -1
- package/dist/decisions/strategies/rules.js +24 -24
- package/dist/decisions/strategies/rules.js.map +1 -1
- package/dist/decisions/strategies/score.d.ts +1 -1
- package/dist/decisions/strategies/score.js +3 -3
- package/dist/decisions/types.d.ts +19 -19
- package/dist/editorLoader.js +20 -20
- package/dist/editorLoader.js.map +1 -1
- package/dist/events/EventBus.d.ts +3 -3
- package/dist/events/EventBus.js +5 -7
- package/dist/events/EventBus.js.map +1 -1
- package/dist/events/index.d.ts +6 -6
- package/dist/events/index.js +5 -5
- package/dist/events/normalizers/canvas.d.ts +2 -2
- package/dist/events/normalizers/canvas.js +3 -3
- package/dist/events/normalizers/canvas.js.map +1 -1
- package/dist/events/normalizers/posthog.d.ts +1 -1
- package/dist/events/normalizers/posthog.js +35 -27
- package/dist/events/normalizers/posthog.js.map +1 -1
- package/dist/events/schema.d.ts +1 -1
- package/dist/events/schema.js +2 -2
- package/dist/events/types.d.ts +1 -1
- package/dist/events/types.js +27 -27
- 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 +5 -5
- package/dist/hooks/useCanvasOverlays.js +15 -13
- 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 +3 -3
- package/dist/hooks/useShadowCanvasConfig.js +5 -2
- 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 +32 -32
- package/dist/index.js +29 -29
- package/dist/index.js.map +1 -1
- 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.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 +12 -12
- package/dist/runtime.js +20 -20
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +16 -16
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +644 -491
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +15 -15
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/state/StateStore.d.ts +1 -1
- package/dist/state/StateStore.js +9 -9
- package/dist/state/StateStore.js.map +1 -1
- package/dist/state/helpers/cooldowns.d.ts +1 -1
- package/dist/state/helpers/cooldowns.js +1 -1
- package/dist/state/helpers/dismissals.d.ts +1 -1
- package/dist/state/helpers/dismissals.js +1 -1
- package/dist/state/helpers/frequency.d.ts +1 -1
- package/dist/state/helpers/frequency.js +1 -1
- package/dist/state/index.d.ts +4 -4
- package/dist/state/index.js +3 -3
- package/dist/state/schema.d.ts +1 -1
- package/dist/state/schema.js +1 -1
- package/dist/store/example.js +13 -13
- package/dist/store/example.js.map +1 -1
- package/dist/store/mini-effector.js +6 -8
- package/dist/store/mini-effector.js.map +1 -1
- package/dist/surfaces/Surfaces.d.ts +1 -1
- package/dist/surfaces/Surfaces.js +25 -25
- package/dist/surfaces/Surfaces.js.map +1 -1
- package/dist/surfaces/index.d.ts +4 -4
- package/dist/surfaces/index.js +3 -3
- package/dist/surfaces/positioning.d.ts +2 -2
- package/dist/surfaces/positioning.js +74 -77
- package/dist/surfaces/positioning.js.map +1 -1
- package/dist/surfaces/types.d.ts +9 -9
- package/dist/surfaces/types.js +7 -7
- package/dist/surfaces/types.js.map +1 -1
- 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 +2 -2
- package/dist/telemetry/adapters/posthog.js +29 -16
- 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.js +3 -6
- package/dist/token.js.map +1 -1
- package/dist/types-only.d.ts +1 -1
- package/dist/types.d.ts +43 -43
- package/dist/widgets/WidgetRegistry.d.ts +2 -2
- package/dist/widgets/WidgetRegistry.js +11 -11
- package/dist/widgets/WidgetRegistry.js.map +1 -1
- package/dist/widgets/index.d.ts +2 -2
- package/dist/widgets/index.js +1 -1
- package/dist/widgets/index.js.map +1 -1
- package/package.json +4 -2
- package/schema/canvas-config.schema.json +51 -7
- package/schema/runtime-context.schema.json +1 -5
|
@@ -5,40 +5,40 @@ export function evaluateCondition(condition, evalContext) {
|
|
|
5
5
|
var _a, _b, _c, _d, _e;
|
|
6
6
|
const { context, state, events } = evalContext;
|
|
7
7
|
switch (condition.type) {
|
|
8
|
-
case
|
|
8
|
+
case 'page_url': {
|
|
9
9
|
const { url } = condition;
|
|
10
10
|
const currentUrl = context.page.url;
|
|
11
11
|
// Simple pattern matching with wildcards
|
|
12
12
|
const pattern = url
|
|
13
|
-
.replace(/[.+^${}()|[\]\\]/g,
|
|
14
|
-
.replace(/\*\*/g,
|
|
15
|
-
.replace(/\*/g,
|
|
13
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex chars except * and ?
|
|
14
|
+
.replace(/\*\*/g, '.*') // ** matches anything
|
|
15
|
+
.replace(/\*/g, '[^/]*'); // * matches within path segment
|
|
16
16
|
const regex = new RegExp(`^${pattern}$`);
|
|
17
17
|
return regex.test(currentUrl);
|
|
18
18
|
}
|
|
19
|
-
case
|
|
19
|
+
case 'route': {
|
|
20
20
|
return context.page.routeId === condition.routeId;
|
|
21
21
|
}
|
|
22
|
-
case
|
|
22
|
+
case 'anchor_visible': {
|
|
23
23
|
const anchor = (_a = context.anchors) === null || _a === void 0 ? void 0 : _a.find((a) => a.anchorId === condition.anchorId);
|
|
24
24
|
switch (condition.state) {
|
|
25
|
-
case
|
|
25
|
+
case 'visible':
|
|
26
26
|
return (anchor === null || anchor === void 0 ? void 0 : anchor.visible) === true;
|
|
27
|
-
case
|
|
27
|
+
case 'present':
|
|
28
28
|
return (anchor === null || anchor === void 0 ? void 0 : anchor.present) === true;
|
|
29
|
-
case
|
|
29
|
+
case 'absent':
|
|
30
30
|
return !(anchor === null || anchor === void 0 ? void 0 : anchor.present);
|
|
31
31
|
default:
|
|
32
32
|
return false;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
case
|
|
35
|
+
case 'event_occurred': {
|
|
36
36
|
if (!events)
|
|
37
37
|
return false;
|
|
38
38
|
const withinMs = (_b = condition.withinMs) !== null && _b !== void 0 ? _b : 60000; // Default 1 minute
|
|
39
39
|
return events.hasRecentEvent(condition.eventName, withinMs);
|
|
40
40
|
}
|
|
41
|
-
case
|
|
41
|
+
case 'state_equals': {
|
|
42
42
|
// This checks arbitrary state values - implementation depends on
|
|
43
43
|
// how the state store exposes values. For now, check session storage.
|
|
44
44
|
if (!state)
|
|
@@ -47,7 +47,7 @@ export function evaluateCondition(condition, evalContext) {
|
|
|
47
47
|
// For simplicity, we'll do a basic comparison
|
|
48
48
|
return false; // TODO: Implement when state interface is clearer
|
|
49
49
|
}
|
|
50
|
-
case
|
|
50
|
+
case 'viewport': {
|
|
51
51
|
const { width, height } = context.viewport;
|
|
52
52
|
if (condition.minWidth !== undefined && width < condition.minWidth)
|
|
53
53
|
return false;
|
|
@@ -59,39 +59,39 @@ export function evaluateCondition(condition, evalContext) {
|
|
|
59
59
|
return false;
|
|
60
60
|
return true;
|
|
61
61
|
}
|
|
62
|
-
case
|
|
62
|
+
case 'session_metric': {
|
|
63
63
|
if (!state)
|
|
64
64
|
return false;
|
|
65
65
|
const metricValue = state.getSessionMetric(condition.key);
|
|
66
66
|
const { operator, threshold } = condition;
|
|
67
67
|
switch (operator) {
|
|
68
|
-
case
|
|
68
|
+
case 'gte':
|
|
69
69
|
return metricValue >= threshold;
|
|
70
|
-
case
|
|
70
|
+
case 'lte':
|
|
71
71
|
return metricValue <= threshold;
|
|
72
|
-
case
|
|
72
|
+
case 'eq':
|
|
73
73
|
return metricValue === threshold;
|
|
74
|
-
case
|
|
74
|
+
case 'gt':
|
|
75
75
|
return metricValue > threshold;
|
|
76
|
-
case
|
|
76
|
+
case 'lt':
|
|
77
77
|
return metricValue < threshold;
|
|
78
78
|
default:
|
|
79
79
|
return false;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
case
|
|
82
|
+
case 'dismissed': {
|
|
83
83
|
if (!state)
|
|
84
84
|
return (_c = condition.inverted) !== null && _c !== void 0 ? _c : false;
|
|
85
85
|
const isDismissed = state.isDismissed(condition.key);
|
|
86
86
|
return condition.inverted ? !isDismissed : isDismissed;
|
|
87
87
|
}
|
|
88
|
-
case
|
|
88
|
+
case 'cooldown_active': {
|
|
89
89
|
if (!state)
|
|
90
90
|
return (_d = condition.inverted) !== null && _d !== void 0 ? _d : false;
|
|
91
91
|
const isActive = state.isCooldownActive(condition.key);
|
|
92
92
|
return condition.inverted ? !isActive : isActive;
|
|
93
93
|
}
|
|
94
|
-
case
|
|
94
|
+
case 'frequency_limit': {
|
|
95
95
|
if (!state)
|
|
96
96
|
return (_e = condition.inverted) !== null && _e !== void 0 ? _e : false;
|
|
97
97
|
const count = state.getFrequencyCount(condition.key);
|
|
@@ -100,7 +100,7 @@ export function evaluateCondition(condition, evalContext) {
|
|
|
100
100
|
}
|
|
101
101
|
default:
|
|
102
102
|
// Unknown condition type - fail closed (return false)
|
|
103
|
-
console.warn(
|
|
103
|
+
console.warn('[RuleStrategy] Unknown condition type:', condition.type);
|
|
104
104
|
return false;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -133,7 +133,7 @@ export function evaluateRuleStrategy(strategy, evalContext) {
|
|
|
133
133
|
value: rule.value,
|
|
134
134
|
isFallback: false,
|
|
135
135
|
matchInfo: {
|
|
136
|
-
strategyType:
|
|
136
|
+
strategyType: 'rules',
|
|
137
137
|
matchedRuleIndex: i,
|
|
138
138
|
evaluatedConditions: conditionResults,
|
|
139
139
|
},
|
|
@@ -145,7 +145,7 @@ export function evaluateRuleStrategy(strategy, evalContext) {
|
|
|
145
145
|
value: strategy.default,
|
|
146
146
|
isFallback: true,
|
|
147
147
|
matchInfo: {
|
|
148
|
-
strategyType:
|
|
148
|
+
strategyType: 'rules',
|
|
149
149
|
},
|
|
150
150
|
};
|
|
151
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/decisions/strategies/rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/decisions/strategies/rules.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoB,EAAE,WAA8B;;IACpF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAE/C,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAEpC,yCAAyC;YACzC,MAAM,OAAO,GAAG,GAAG;iBAChB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,oCAAoC;iBACzE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,sBAAsB;iBAC7C,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,gCAAgC;YAE5D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC;QACpD,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE/E,QAAQ,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxB,KAAK,SAAS;oBACZ,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,IAAI,CAAC;gBAClC,KAAK,SAAS;oBACZ,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,IAAI,CAAC;gBAClC,KAAK,QAAQ;oBACX,OAAO,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,CAAC;gBAC1B;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAA,SAAS,CAAC,QAAQ,mCAAI,KAAK,CAAC,CAAC,mBAAmB;YACjE,OAAO,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,iEAAiE;YACjE,sEAAsE;YACtE,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,+DAA+D;YAC/D,8CAA8C;YAC9C,OAAO,KAAK,CAAC,CAAC,kDAAkD;QAClE,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC3C,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACjF,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACjF,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YACpF,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;YAE1C,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,KAAK;oBACR,OAAO,WAAW,IAAI,SAAS,CAAC;gBAClC,KAAK,KAAK;oBACR,OAAO,WAAW,IAAI,SAAS,CAAC;gBAClC,KAAK,IAAI;oBACP,OAAO,WAAW,KAAK,SAAS,CAAC;gBACnC,KAAK,IAAI;oBACP,OAAO,WAAW,GAAG,SAAS,CAAC;gBACjC,KAAK,IAAI;oBACP,OAAO,WAAW,GAAG,SAAS,CAAC;gBACjC;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK;gBAAE,OAAO,MAAA,SAAS,CAAC,QAAQ,mCAAI,KAAK,CAAC;YAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QACzD,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK;gBAAE,OAAO,MAAA,SAAS,CAAC,QAAQ,mCAAI,KAAK,CAAC;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvD,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK;gBAAE,OAAO,MAAA,SAAS,CAAC,QAAQ,mCAAI,KAAK,CAAC;YAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;YAC9C,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;QAC3D,CAAC;QAED;YACE,sDAAsD;YACtD,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAG,SAAiB,CAAC,IAAI,CAAC,CAAC;YAChF,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAU,EACV,WAA8B;IAE9B,MAAM,gBAAgB,GAAqD,EAAE,CAAC;IAE9E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACzD,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7C,4DAA4D;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,WAA8B;IAE9B,0BAA0B;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEtE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAU;gBACtB,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE;oBACT,YAAY,EAAE,OAAO;oBACrB,gBAAgB,EAAE,CAAC;oBACnB,mBAAmB,EAAE,gBAAgB;iBACtC;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,OAAY;QAC5B,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE;YACT,YAAY,EAAE,OAAO;SACtB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Compares an augmented field value against a threshold.
|
|
5
5
|
*/
|
|
6
|
-
import type { ScoreStrategy, DecisionResult, EvaluationContext } from
|
|
6
|
+
import type { ScoreStrategy, DecisionResult, EvaluationContext } from '../types';
|
|
7
7
|
/**
|
|
8
8
|
* Evaluate a ScoreStrategy and return the result.
|
|
9
9
|
*/
|
|
@@ -7,12 +7,12 @@ export function evaluateScoreStrategy(strategy, evalContext) {
|
|
|
7
7
|
// Get the score from augmented context
|
|
8
8
|
const score = (_a = context.augmented) === null || _a === void 0 ? void 0 : _a[strategy.field];
|
|
9
9
|
// If no score available, return below value as fallback
|
|
10
|
-
if (score === undefined || typeof score !==
|
|
10
|
+
if (score === undefined || typeof score !== 'number') {
|
|
11
11
|
return {
|
|
12
12
|
value: strategy.below,
|
|
13
13
|
isFallback: true,
|
|
14
14
|
matchInfo: {
|
|
15
|
-
strategyType:
|
|
15
|
+
strategyType: 'score',
|
|
16
16
|
},
|
|
17
17
|
};
|
|
18
18
|
}
|
|
@@ -22,7 +22,7 @@ export function evaluateScoreStrategy(strategy, evalContext) {
|
|
|
22
22
|
value: isAbove ? strategy.above : strategy.below,
|
|
23
23
|
isFallback: false,
|
|
24
24
|
matchInfo: {
|
|
25
|
-
strategyType:
|
|
25
|
+
strategyType: 'score',
|
|
26
26
|
},
|
|
27
27
|
};
|
|
28
28
|
}
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
* and adaptive behavior in the v2 runtime. It replaces the experiment-based
|
|
6
6
|
* filtering with a more flexible, context-aware system.
|
|
7
7
|
*/
|
|
8
|
-
import type { RuntimeContext } from
|
|
8
|
+
import type { RuntimeContext } from '../context/types';
|
|
9
9
|
/**
|
|
10
10
|
* Condition that checks if the current page URL matches a pattern.
|
|
11
11
|
*/
|
|
12
12
|
export interface PageUrlCondition {
|
|
13
|
-
type:
|
|
13
|
+
type: 'page_url';
|
|
14
14
|
/** URL pattern (supports wildcards: * and **) */
|
|
15
15
|
url: string;
|
|
16
16
|
}
|
|
@@ -18,7 +18,7 @@ export interface PageUrlCondition {
|
|
|
18
18
|
* Condition that checks if the current route matches.
|
|
19
19
|
*/
|
|
20
20
|
export interface RouteCondition {
|
|
21
|
-
type:
|
|
21
|
+
type: 'route';
|
|
22
22
|
/** Route ID from RoutesConfig */
|
|
23
23
|
routeId: string;
|
|
24
24
|
}
|
|
@@ -26,17 +26,17 @@ export interface RouteCondition {
|
|
|
26
26
|
* Condition that checks anchor element visibility.
|
|
27
27
|
*/
|
|
28
28
|
export interface AnchorVisibleCondition {
|
|
29
|
-
type:
|
|
29
|
+
type: 'anchor_visible';
|
|
30
30
|
/** Anchor element ID */
|
|
31
31
|
anchorId: string;
|
|
32
32
|
/** Required state */
|
|
33
|
-
state:
|
|
33
|
+
state: 'visible' | 'present' | 'absent';
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Condition that checks if an event occurred recently.
|
|
37
37
|
*/
|
|
38
38
|
export interface EventOccurredCondition {
|
|
39
|
-
type:
|
|
39
|
+
type: 'event_occurred';
|
|
40
40
|
/** Event name to check */
|
|
41
41
|
eventName: string;
|
|
42
42
|
/** Time window in milliseconds (optional) */
|
|
@@ -46,7 +46,7 @@ export interface EventOccurredCondition {
|
|
|
46
46
|
* Condition that checks a state value.
|
|
47
47
|
*/
|
|
48
48
|
export interface StateEqualsCondition {
|
|
49
|
-
type:
|
|
49
|
+
type: 'state_equals';
|
|
50
50
|
/** State key to check */
|
|
51
51
|
key: string;
|
|
52
52
|
/** Expected value */
|
|
@@ -56,7 +56,7 @@ export interface StateEqualsCondition {
|
|
|
56
56
|
* Condition that checks viewport size.
|
|
57
57
|
*/
|
|
58
58
|
export interface ViewportCondition {
|
|
59
|
-
type:
|
|
59
|
+
type: 'viewport';
|
|
60
60
|
/** Minimum viewport width */
|
|
61
61
|
minWidth?: number;
|
|
62
62
|
/** Maximum viewport width */
|
|
@@ -70,11 +70,11 @@ export interface ViewportCondition {
|
|
|
70
70
|
* Condition that checks a session metric threshold.
|
|
71
71
|
*/
|
|
72
72
|
export interface SessionMetricCondition {
|
|
73
|
-
type:
|
|
73
|
+
type: 'session_metric';
|
|
74
74
|
/** Metric key */
|
|
75
75
|
key: string;
|
|
76
76
|
/** Comparison operator */
|
|
77
|
-
operator:
|
|
77
|
+
operator: 'gte' | 'lte' | 'eq' | 'gt' | 'lt';
|
|
78
78
|
/** Threshold value */
|
|
79
79
|
threshold: number;
|
|
80
80
|
}
|
|
@@ -82,7 +82,7 @@ export interface SessionMetricCondition {
|
|
|
82
82
|
* Condition that checks if an item has been dismissed.
|
|
83
83
|
*/
|
|
84
84
|
export interface DismissedCondition {
|
|
85
|
-
type:
|
|
85
|
+
type: 'dismissed';
|
|
86
86
|
/** Item key to check */
|
|
87
87
|
key: string;
|
|
88
88
|
/** Invert the condition (true if NOT dismissed) */
|
|
@@ -92,7 +92,7 @@ export interface DismissedCondition {
|
|
|
92
92
|
* Condition that checks if a cooldown is active.
|
|
93
93
|
*/
|
|
94
94
|
export interface CooldownActiveCondition {
|
|
95
|
-
type:
|
|
95
|
+
type: 'cooldown_active';
|
|
96
96
|
/** Cooldown key to check */
|
|
97
97
|
key: string;
|
|
98
98
|
/** Invert the condition (true if NOT active) */
|
|
@@ -102,7 +102,7 @@ export interface CooldownActiveCondition {
|
|
|
102
102
|
* Condition that checks frequency limits.
|
|
103
103
|
*/
|
|
104
104
|
export interface FrequencyLimitCondition {
|
|
105
|
-
type:
|
|
105
|
+
type: 'frequency_limit';
|
|
106
106
|
/** Frequency key to check */
|
|
107
107
|
key: string;
|
|
108
108
|
/** Maximum allowed count */
|
|
@@ -127,7 +127,7 @@ export interface Rule<T = unknown> {
|
|
|
127
127
|
* Rule-based strategy: evaluates rules in order, returns first match.
|
|
128
128
|
*/
|
|
129
129
|
export interface RuleStrategy<T = unknown> {
|
|
130
|
-
type:
|
|
130
|
+
type: 'rules';
|
|
131
131
|
/** Rules to evaluate in order */
|
|
132
132
|
rules: Rule<T>[];
|
|
133
133
|
/** Default value if no rules match */
|
|
@@ -137,7 +137,7 @@ export interface RuleStrategy<T = unknown> {
|
|
|
137
137
|
* Score-based strategy: compares an augmented field against a threshold.
|
|
138
138
|
*/
|
|
139
139
|
export interface ScoreStrategy<T = unknown> {
|
|
140
|
-
type:
|
|
140
|
+
type: 'score';
|
|
141
141
|
/** Field name in augmented context */
|
|
142
142
|
field: string;
|
|
143
143
|
/** Threshold value */
|
|
@@ -152,7 +152,7 @@ export interface ScoreStrategy<T = unknown> {
|
|
|
152
152
|
* (Phase 3 - placeholder)
|
|
153
153
|
*/
|
|
154
154
|
export interface ModelStrategy<T = unknown> {
|
|
155
|
-
type:
|
|
155
|
+
type: 'model';
|
|
156
156
|
/** Model endpoint or ID */
|
|
157
157
|
modelId: string;
|
|
158
158
|
/** Input fields from context */
|
|
@@ -167,11 +167,11 @@ export interface ModelStrategy<T = unknown> {
|
|
|
167
167
|
* (Phase 3 - placeholder)
|
|
168
168
|
*/
|
|
169
169
|
export interface ExternalStrategy<T = unknown> {
|
|
170
|
-
type:
|
|
170
|
+
type: 'external';
|
|
171
171
|
/** Endpoint URL */
|
|
172
172
|
endpoint: string;
|
|
173
173
|
/** HTTP method */
|
|
174
|
-
method?:
|
|
174
|
+
method?: 'GET' | 'POST';
|
|
175
175
|
/** Default value if endpoint fails */
|
|
176
176
|
default: T;
|
|
177
177
|
/** Timeout in milliseconds */
|
|
@@ -192,7 +192,7 @@ export interface DecisionResult<T = unknown> {
|
|
|
192
192
|
/** Debug info about which rule/condition matched */
|
|
193
193
|
matchInfo?: {
|
|
194
194
|
/** Strategy type that produced the result */
|
|
195
|
-
strategyType: DecisionStrategy<T>[
|
|
195
|
+
strategyType: DecisionStrategy<T>['type'];
|
|
196
196
|
/** Index of matched rule (for rule strategy) */
|
|
197
197
|
matchedRuleIndex?: number;
|
|
198
198
|
/** Conditions that were evaluated */
|
package/dist/editorLoader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { debug, warn } from
|
|
2
|
-
export const DEFAULT_EDITOR_URL =
|
|
1
|
+
import { debug, warn } from './logger';
|
|
2
|
+
export const DEFAULT_EDITOR_URL = 'https://cdn.syntrologie.com/editor-sdk/latest/editor-sdk.js';
|
|
3
3
|
/**
|
|
4
4
|
* Allowed hosts for loading the editor SDK.
|
|
5
5
|
* Only scripts from these hosts will be loaded.
|
|
@@ -39,7 +39,7 @@ function validateEditorUrl(url) {
|
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
41
|
// Check against allowlist - handle both exact match and suffix match
|
|
42
|
-
const isAllowed = ALLOWED_EDITOR_HOSTS.some(host => {
|
|
42
|
+
const isAllowed = ALLOWED_EDITOR_HOSTS.some((host) => {
|
|
43
43
|
if (host.startsWith('.')) {
|
|
44
44
|
// Suffix match for wildcards like '.syntrologie.com'
|
|
45
45
|
return parsed.hostname.endsWith(host) || parsed.hostname === host.slice(1);
|
|
@@ -70,7 +70,7 @@ function validateEditorUrl(url) {
|
|
|
70
70
|
export const shouldLoadEditor = () => {
|
|
71
71
|
var _a;
|
|
72
72
|
debug('Syntro Runtime', '====== EDITOR LOAD CHECK ======');
|
|
73
|
-
if (typeof window ===
|
|
73
|
+
if (typeof window === 'undefined') {
|
|
74
74
|
debug('Syntro Runtime', 'Not in browser - skipping editor');
|
|
75
75
|
return false;
|
|
76
76
|
}
|
|
@@ -78,14 +78,14 @@ export const shouldLoadEditor = () => {
|
|
|
78
78
|
debug('Syntro Runtime', 'URL:', window.location.href);
|
|
79
79
|
debug('Syntro Runtime', 'Search params:', window.location.search);
|
|
80
80
|
// Require editor_token for security - prevents arbitrary editor activation
|
|
81
|
-
const hasEditorFlag = params.has(
|
|
82
|
-
const hasEditorToken = params.has(
|
|
81
|
+
const hasEditorFlag = params.has('syntro_editor') || params.has('syntro-editor');
|
|
82
|
+
const hasEditorToken = params.has('editor_token');
|
|
83
83
|
debug('Syntro Runtime', 'Editor flags:', {
|
|
84
84
|
hasEditorFlag,
|
|
85
85
|
hasEditorToken,
|
|
86
|
-
syntro_editor: params.get(
|
|
87
|
-
|
|
88
|
-
editor_token: hasEditorToken ? `${(_a = params.get(
|
|
86
|
+
syntro_editor: params.get('syntro_editor'),
|
|
87
|
+
'syntro-editor': params.get('syntro-editor'),
|
|
88
|
+
editor_token: hasEditorToken ? `${(_a = params.get('editor_token')) === null || _a === void 0 ? void 0 : _a.slice(0, 10)}...` : 'none',
|
|
89
89
|
});
|
|
90
90
|
if (hasEditorFlag && !hasEditorToken) {
|
|
91
91
|
warn('Syntro Runtime', '❌ Editor activation requires editor_token parameter');
|
|
@@ -105,19 +105,19 @@ export const shouldLoadEditor = () => {
|
|
|
105
105
|
export const isAuditMode = () => {
|
|
106
106
|
var _a;
|
|
107
107
|
debug('Syntro Runtime', '====== AUDIT MODE CHECK ======');
|
|
108
|
-
if (typeof window ===
|
|
108
|
+
if (typeof window === 'undefined') {
|
|
109
109
|
debug('Syntro Runtime', 'Not in browser - skipping audit');
|
|
110
110
|
return false;
|
|
111
111
|
}
|
|
112
112
|
const params = new URLSearchParams(window.location.search);
|
|
113
|
-
const hasAuditFlag = params.has(
|
|
114
|
-
const hasAuditToken = params.has(
|
|
115
|
-
const auditSessionId = params.get(
|
|
113
|
+
const hasAuditFlag = params.has('syntro_audit');
|
|
114
|
+
const hasAuditToken = params.has('audit_token');
|
|
115
|
+
const auditSessionId = params.get('audit_session_id');
|
|
116
116
|
debug('Syntro Runtime', 'Audit flags:', {
|
|
117
117
|
hasAuditFlag,
|
|
118
118
|
hasAuditToken,
|
|
119
119
|
auditSessionId: auditSessionId ? `${auditSessionId.slice(0, 8)}...` : 'none',
|
|
120
|
-
audit_token: hasAuditToken ? `${(_a = params.get(
|
|
120
|
+
audit_token: hasAuditToken ? `${(_a = params.get('audit_token')) === null || _a === void 0 ? void 0 : _a.slice(0, 10)}...` : 'none',
|
|
121
121
|
});
|
|
122
122
|
// Require syntro_audit flag to activate audit mode
|
|
123
123
|
if (!hasAuditFlag) {
|
|
@@ -151,10 +151,10 @@ export const getActiveSdkMode = () => {
|
|
|
151
151
|
* Returns the token value or null if not found.
|
|
152
152
|
*/
|
|
153
153
|
function getTokenFromUrl() {
|
|
154
|
-
if (typeof window ===
|
|
154
|
+
if (typeof window === 'undefined')
|
|
155
155
|
return null;
|
|
156
156
|
const params = new URLSearchParams(window.location.search);
|
|
157
|
-
return params.get(
|
|
157
|
+
return params.get('editor_token') || params.get('audit_token');
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
160
|
* Dynamically loads the Editor SDK script.
|
|
@@ -163,7 +163,7 @@ function getTokenFromUrl() {
|
|
|
163
163
|
*/
|
|
164
164
|
export const loadEditorSdk = async (editorUrlOrOptions) => {
|
|
165
165
|
debug('Syntro Runtime', '====== LOAD EDITOR SDK ======');
|
|
166
|
-
if (typeof window ===
|
|
166
|
+
if (typeof window === 'undefined') {
|
|
167
167
|
debug('Syntro Runtime', 'Not in browser - skipping editor SDK load');
|
|
168
168
|
return;
|
|
169
169
|
}
|
|
@@ -174,7 +174,7 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
|
|
|
174
174
|
// Handle both legacy string arg and new options object
|
|
175
175
|
const options = typeof editorUrlOrOptions === 'string'
|
|
176
176
|
? { editorUrl: editorUrlOrOptions }
|
|
177
|
-
: editorUrlOrOptions !== null && editorUrlOrOptions !== void 0 ? editorUrlOrOptions : {};
|
|
177
|
+
: (editorUrlOrOptions !== null && editorUrlOrOptions !== void 0 ? editorUrlOrOptions : {});
|
|
178
178
|
// Check for editor SDK URL override in query params
|
|
179
179
|
const params = new URLSearchParams(window.location.search);
|
|
180
180
|
const urlParamEditorSdk = params.get('syntro_editor_sdk_url');
|
|
@@ -207,13 +207,13 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
|
|
|
207
207
|
}
|
|
208
208
|
debug('Syntro Runtime', '✓ URL validated, injecting script tag...');
|
|
209
209
|
return new Promise((resolve, reject) => {
|
|
210
|
-
const script = document.createElement(
|
|
210
|
+
const script = document.createElement('script');
|
|
211
211
|
script.src = editorUrl;
|
|
212
212
|
script.async = true;
|
|
213
213
|
// Add SRI integrity check if provided
|
|
214
214
|
if (options.integrity) {
|
|
215
215
|
script.integrity = options.integrity;
|
|
216
|
-
script.crossOrigin =
|
|
216
|
+
script.crossOrigin = 'anonymous';
|
|
217
217
|
debug('Syntro Runtime', 'SRI integrity check enabled');
|
|
218
218
|
}
|
|
219
219
|
script.onload = () => {
|
package/dist/editorLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorLoader.js","sourceRoot":"","sources":["../src/editorLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEhG;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,WAAW;IACX,WAAW;IACX,uDAAuD;IACvD,kBAAkB;CACnB,CAAC;AAEF;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,KAAK,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,wDAAwD;QACxD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,gBAAgB,EAAE,uCAAuC,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,WAAW,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvE,KAAK,CAAC,gBAAgB,EAAE,aAAa,EAAE;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW;SACZ,CAAC,CAAC;QAEH,kCAAkC;QAClC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,gBAAgB,EAAE,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"editorLoader.js","sourceRoot":"","sources":["../src/editorLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Event history for recent event lookups
|
|
7
7
|
* - Filtering by name, pattern, or source
|
|
8
8
|
*/
|
|
9
|
-
import type { NormalizedEvent, EventFilter, EventCallback, EventUnsubscribe } from
|
|
9
|
+
import type { NormalizedEvent, EventFilter, EventCallback, EventUnsubscribe } from './types';
|
|
10
10
|
export interface EventBusOptions {
|
|
11
11
|
/** Maximum number of events to keep in history */
|
|
12
12
|
maxHistorySize?: number;
|
|
@@ -27,7 +27,7 @@ export declare class EventBus {
|
|
|
27
27
|
/**
|
|
28
28
|
* Publish an event to all matching subscribers.
|
|
29
29
|
*/
|
|
30
|
-
publish(name: string, props?: Record<string, unknown>, source?: NormalizedEvent[
|
|
30
|
+
publish(name: string, props?: Record<string, unknown>, source?: NormalizedEvent['source']): void;
|
|
31
31
|
/**
|
|
32
32
|
* Publish a pre-constructed NormalizedEvent.
|
|
33
33
|
*/
|
|
@@ -39,7 +39,7 @@ export declare class EventBus {
|
|
|
39
39
|
/**
|
|
40
40
|
* Check if an event with a specific name occurred within a time window.
|
|
41
41
|
*/
|
|
42
|
-
hasRecentEvent(eventName: string, withinMs: number, source?: NormalizedEvent[
|
|
42
|
+
hasRecentEvent(eventName: string, withinMs: number, source?: NormalizedEvent['source']): boolean;
|
|
43
43
|
/**
|
|
44
44
|
* Count events matching a filter within a time window.
|
|
45
45
|
*/
|
package/dist/events/EventBus.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EVENT_SCHEMA_VERSION } from
|
|
1
|
+
import { EVENT_SCHEMA_VERSION } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* Check if an event matches a filter.
|
|
4
4
|
*/
|
|
@@ -51,7 +51,7 @@ export class EventBus {
|
|
|
51
51
|
let filter;
|
|
52
52
|
let callback;
|
|
53
53
|
// Handle overloaded signatures
|
|
54
|
-
if (typeof filterOrCallback ===
|
|
54
|
+
if (typeof filterOrCallback === 'function') {
|
|
55
55
|
filter = undefined;
|
|
56
56
|
callback = filterOrCallback;
|
|
57
57
|
}
|
|
@@ -68,7 +68,7 @@ export class EventBus {
|
|
|
68
68
|
/**
|
|
69
69
|
* Publish an event to all matching subscribers.
|
|
70
70
|
*/
|
|
71
|
-
publish(name, props, source =
|
|
71
|
+
publish(name, props, source = 'canvas') {
|
|
72
72
|
const event = {
|
|
73
73
|
ts: Date.now(),
|
|
74
74
|
name,
|
|
@@ -94,7 +94,7 @@ export class EventBus {
|
|
|
94
94
|
subscription.callback(event);
|
|
95
95
|
}
|
|
96
96
|
catch (err) {
|
|
97
|
-
console.error(
|
|
97
|
+
console.error('[EventBus] Subscriber error:', err);
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
}
|
|
@@ -117,9 +117,7 @@ export class EventBus {
|
|
|
117
117
|
*/
|
|
118
118
|
hasRecentEvent(eventName, withinMs, source) {
|
|
119
119
|
const cutoff = Date.now() - withinMs;
|
|
120
|
-
return this.history.some((e) => e.name === eventName &&
|
|
121
|
-
e.ts >= cutoff &&
|
|
122
|
-
(source === undefined || e.source === source));
|
|
120
|
+
return this.history.some((e) => e.name === eventName && e.ts >= cutoff && (source === undefined || e.source === source));
|
|
123
121
|
}
|
|
124
122
|
/**
|
|
125
123
|
* Count events matching a filter within a time window.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBus.js","sourceRoot":"","sources":["../../src/events/EventBus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EventBus.js","sourceRoot":"","sources":["../../src/events/EventBus.ts"],"names":[],"mappings":"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"}
|
package/dist/events/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Events module exports.
|
|
3
3
|
*/
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export { EventBus, createEventBus } from
|
|
7
|
-
export type { EventBusOptions } from
|
|
8
|
-
export { normalizePostHogEvent, shouldNormalizeEvent, createPostHogNormalizer, } from
|
|
9
|
-
export { CanvasEvents } from
|
|
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';
|
package/dist/events/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Events module exports.
|
|
3
3
|
*/
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export { EventBus, createEventBus } from
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './schema';
|
|
6
|
+
export { EventBus, createEventBus } from './EventBus';
|
|
7
7
|
// Normalizers
|
|
8
|
-
export { normalizePostHogEvent, shouldNormalizeEvent, createPostHogNormalizer, } from
|
|
9
|
-
export { CanvasEvents } from
|
|
8
|
+
export { normalizePostHogEvent, shouldNormalizeEvent, createPostHogNormalizer, } from './normalizers/posthog';
|
|
9
|
+
export { CanvasEvents } from './normalizers/canvas';
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Transforms Smart Canvas events into normalized events for the EventBus.
|
|
5
5
|
*/
|
|
6
|
-
import type { NormalizedEvent } from
|
|
7
|
-
import type { CanvasSurface } from
|
|
6
|
+
import type { NormalizedEvent } from '../types';
|
|
7
|
+
import type { CanvasSurface } from '../../telemetry/types';
|
|
8
8
|
/**
|
|
9
9
|
* Canvas opened event.
|
|
10
10
|
*/
|