@syntrologie/runtime-sdk 0.2.21 → 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 +721 -460
- 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 +86 -56
- 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 +32 -8
- package/dist/bootstrap.js +204 -85
- 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 +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 +17 -17
- 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 +97 -97
- 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/earlyPatcher.d.ts +8 -20
- package/dist/earlyPatcher.js +13 -62
- package/dist/earlyPatcher.js.map +1 -1
- package/dist/editorLoader.d.ts +2 -0
- package/dist/editorLoader.js +104 -58
- 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 +25 -1
- package/dist/events/normalizers/posthog.js +35 -27
- package/dist/events/normalizers/posthog.js.map +1 -1
- package/dist/events/schema.d.ts +13 -13
- package/dist/events/schema.js +2 -2
- package/dist/events/types.d.ts +7 -1
- package/dist/events/types.js +29 -21
- package/dist/events/types.js.map +1 -1
- 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 +5 -9
- package/dist/hooks/useShadowCanvasConfig.js +7 -5
- 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 -27
- package/dist/index.js +36 -24
- 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 +146 -146
- 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 +32 -8
- package/dist/runtime.js +87 -13
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +155 -78
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +38776 -33216
- 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 +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.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 +8 -2
- 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 +89 -56
- 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 +26 -10
- package/schema/canvas-config.schema.json +488 -254
- package/schema/runtime-context.schema.json +1 -5
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config validation and migration for SDK versioning.
|
|
3
|
+
*
|
|
4
|
+
* This module handles:
|
|
5
|
+
* - Validating configs against the current SDK schema version
|
|
6
|
+
* - Migrating old config formats to current version
|
|
7
|
+
* - Providing warnings for version mismatches
|
|
8
|
+
*/
|
|
9
|
+
import type { CanvasConfigResponse } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Result of config validation.
|
|
12
|
+
*/
|
|
13
|
+
export interface ConfigValidationResult {
|
|
14
|
+
/** Whether the config is valid and can be used */
|
|
15
|
+
valid: boolean;
|
|
16
|
+
/** Warning messages (non-fatal issues) */
|
|
17
|
+
warnings: string[];
|
|
18
|
+
/** Error messages (fatal issues that prevent usage) */
|
|
19
|
+
errors: string[];
|
|
20
|
+
/** Migrated config if old version was detected */
|
|
21
|
+
migratedConfig?: CanvasConfigResponse;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse a schema version string into major and minor numbers.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseVersion(version: string): {
|
|
27
|
+
major: number;
|
|
28
|
+
minor: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Validate and normalize a config, handling version mismatches.
|
|
32
|
+
*
|
|
33
|
+
* This function:
|
|
34
|
+
* 1. Checks if config is valid object
|
|
35
|
+
* 2. Compares config schema version with SDK version
|
|
36
|
+
* 3. Migrates old configs to current version
|
|
37
|
+
* 4. Returns validation result with warnings/errors
|
|
38
|
+
*
|
|
39
|
+
* @param config - Raw config from backend or fetcher
|
|
40
|
+
* @returns Validation result with any migrations applied
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateConfig(config: unknown): ConfigValidationResult;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a config needs migration.
|
|
45
|
+
*
|
|
46
|
+
* @param config - Config to check
|
|
47
|
+
* @returns True if migration is needed
|
|
48
|
+
*/
|
|
49
|
+
export declare function needsMigration(config: unknown): boolean;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config validation and migration for SDK versioning.
|
|
3
|
+
*
|
|
4
|
+
* This module handles:
|
|
5
|
+
* - Validating configs against the current SDK schema version
|
|
6
|
+
* - Migrating old config formats to current version
|
|
7
|
+
* - Providing warnings for version mismatches
|
|
8
|
+
*/
|
|
9
|
+
import { SDK_SCHEMA_VERSION } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Parse a schema version string into major and minor numbers.
|
|
12
|
+
*/
|
|
13
|
+
export function parseVersion(version) {
|
|
14
|
+
const parts = version.split('.');
|
|
15
|
+
return {
|
|
16
|
+
major: parseInt(parts[0] || '0', 10),
|
|
17
|
+
minor: parseInt(parts[1] || '0', 10),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate and normalize a config, handling version mismatches.
|
|
22
|
+
*
|
|
23
|
+
* This function:
|
|
24
|
+
* 1. Checks if config is valid object
|
|
25
|
+
* 2. Compares config schema version with SDK version
|
|
26
|
+
* 3. Migrates old configs to current version
|
|
27
|
+
* 4. Returns validation result with warnings/errors
|
|
28
|
+
*
|
|
29
|
+
* @param config - Raw config from backend or fetcher
|
|
30
|
+
* @returns Validation result with any migrations applied
|
|
31
|
+
*/
|
|
32
|
+
export function validateConfig(config) {
|
|
33
|
+
const warnings = [];
|
|
34
|
+
const errors = [];
|
|
35
|
+
// Type check
|
|
36
|
+
if (!config || typeof config !== 'object') {
|
|
37
|
+
return {
|
|
38
|
+
valid: false,
|
|
39
|
+
errors: ['Config must be an object'],
|
|
40
|
+
warnings,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const typedConfig = config;
|
|
44
|
+
// Check required fields
|
|
45
|
+
if (!typedConfig.tiles) {
|
|
46
|
+
errors.push('Config missing required field: tiles');
|
|
47
|
+
}
|
|
48
|
+
if (!typedConfig.actions) {
|
|
49
|
+
errors.push('Config missing required field: actions');
|
|
50
|
+
}
|
|
51
|
+
if (!typedConfig.fetchedAt) {
|
|
52
|
+
errors.push('Config missing required field: fetchedAt');
|
|
53
|
+
}
|
|
54
|
+
if (errors.length > 0) {
|
|
55
|
+
return { valid: false, errors, warnings };
|
|
56
|
+
}
|
|
57
|
+
// Check schema version
|
|
58
|
+
const configVersion = typedConfig.schemaVersion || '1.0';
|
|
59
|
+
const configVer = parseVersion(configVersion);
|
|
60
|
+
const sdkVer = parseVersion(SDK_SCHEMA_VERSION);
|
|
61
|
+
// Future schema version (newer backend)
|
|
62
|
+
if (configVer.major > sdkVer.major) {
|
|
63
|
+
warnings.push(`Config schema v${configVersion} is newer than SDK v${SDK_SCHEMA_VERSION}. ` +
|
|
64
|
+
`Some features may not work. Update SDK to latest version.`);
|
|
65
|
+
}
|
|
66
|
+
// Old schema version (older backend or missing version)
|
|
67
|
+
if (configVer.major < sdkVer.major || !typedConfig.schemaVersion) {
|
|
68
|
+
warnings.push(`Config schema v${configVersion} is older than SDK v${SDK_SCHEMA_VERSION}. ` +
|
|
69
|
+
`Migrating config to current version.`);
|
|
70
|
+
return {
|
|
71
|
+
valid: true,
|
|
72
|
+
warnings,
|
|
73
|
+
errors,
|
|
74
|
+
migratedConfig: migrateConfig(typedConfig, configVersion),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Compatible version (same major version)
|
|
78
|
+
return {
|
|
79
|
+
valid: true,
|
|
80
|
+
warnings,
|
|
81
|
+
errors,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Migrate old config format to current SDK version.
|
|
86
|
+
*
|
|
87
|
+
* This function applies all necessary transformations to bring
|
|
88
|
+
* an old config up to the current schema version.
|
|
89
|
+
*
|
|
90
|
+
* @param config - Config to migrate
|
|
91
|
+
* @param fromVersion - Version to migrate from
|
|
92
|
+
* @returns Migrated config at current SDK version
|
|
93
|
+
*/
|
|
94
|
+
function migrateConfig(config, fromVersion) {
|
|
95
|
+
let migrated = { ...config };
|
|
96
|
+
const fromVer = parseVersion(fromVersion);
|
|
97
|
+
// v1.x -> v2.x migration
|
|
98
|
+
if (fromVer.major === 1) {
|
|
99
|
+
migrated = migrateV1ToV2(migrated);
|
|
100
|
+
}
|
|
101
|
+
// Update schema version to current
|
|
102
|
+
migrated.schemaVersion = SDK_SCHEMA_VERSION;
|
|
103
|
+
return migrated;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Migrate v1.x config to v2.0 format.
|
|
107
|
+
*
|
|
108
|
+
* Changes in v2.0:
|
|
109
|
+
* - Introduced ActivationConfig to replace experiment field
|
|
110
|
+
* - Unified ActionStep format
|
|
111
|
+
* - Added schemaVersion field
|
|
112
|
+
*/
|
|
113
|
+
function migrateV1ToV2(config) {
|
|
114
|
+
const migrated = {
|
|
115
|
+
schemaVersion: '2.0',
|
|
116
|
+
tiles: [],
|
|
117
|
+
actions: config.actions || [],
|
|
118
|
+
fetchedAt: config.fetchedAt || new Date().toISOString(),
|
|
119
|
+
};
|
|
120
|
+
// Migrate tiles
|
|
121
|
+
if (config.tiles && Array.isArray(config.tiles)) {
|
|
122
|
+
migrated.tiles = config.tiles.map((tile) => {
|
|
123
|
+
const migratedTile = { ...tile };
|
|
124
|
+
// Migrate deprecated experiment field to activation
|
|
125
|
+
if (tile.experiment && !tile.activation) {
|
|
126
|
+
const exp = tile.experiment;
|
|
127
|
+
// Convert old experiment format to new activation format
|
|
128
|
+
if (exp.featureKey) {
|
|
129
|
+
migratedTile.activation = {
|
|
130
|
+
strategy: {
|
|
131
|
+
type: 'external',
|
|
132
|
+
provider: 'growthbook',
|
|
133
|
+
featureKey: exp.featureKey,
|
|
134
|
+
fallback: false,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Remove deprecated field
|
|
139
|
+
delete migratedTile.experiment;
|
|
140
|
+
}
|
|
141
|
+
return migratedTile;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Copy optional fields
|
|
145
|
+
if (config.configVersion)
|
|
146
|
+
migrated.configVersion = config.configVersion;
|
|
147
|
+
if (config.canvasTitle)
|
|
148
|
+
migrated.canvasTitle = config.canvasTitle;
|
|
149
|
+
if (config.theme)
|
|
150
|
+
migrated.theme = config.theme;
|
|
151
|
+
if (config.launcher)
|
|
152
|
+
migrated.launcher = config.launcher;
|
|
153
|
+
if (config.routes)
|
|
154
|
+
migrated.routes = config.routes;
|
|
155
|
+
return migrated;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if a config needs migration.
|
|
159
|
+
*
|
|
160
|
+
* @param config - Config to check
|
|
161
|
+
* @returns True if migration is needed
|
|
162
|
+
*/
|
|
163
|
+
export function needsMigration(config) {
|
|
164
|
+
if (!config || typeof config !== 'object') {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
const typedConfig = config;
|
|
168
|
+
const configVersion = typedConfig.schemaVersion || '1.0';
|
|
169
|
+
const configVer = parseVersion(configVersion);
|
|
170
|
+
const sdkVer = parseVersion(SDK_SCHEMA_VERSION);
|
|
171
|
+
return configVer.major < sdkVer.major || !typedConfig.schemaVersion;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=config-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../src/config-validator.ts"],"names":[],"mappings":"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"}
|
package/dist/configFetcher.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CanvasConfigFetcher } from
|
|
2
|
-
import type { ExperimentClient } from
|
|
1
|
+
import type { CanvasConfigFetcher } from './types';
|
|
2
|
+
import type { ExperimentClient } from './experiments/types';
|
|
3
3
|
export interface CanvasFetcherOptions {
|
|
4
4
|
configUri?: string;
|
|
5
5
|
experiments?: ExperimentClient;
|
package/dist/configFetcher.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { SDK_SCHEMA_VERSION } from './types';
|
|
2
|
+
import { SDK_VERSION } from './version';
|
|
3
|
+
import { debug } from './logger';
|
|
1
4
|
/**
|
|
2
5
|
* Allowed hosts for fetching config.
|
|
3
6
|
* Only config from these hosts will be fetched.
|
|
@@ -6,7 +9,7 @@ const ALLOWED_CONFIG_HOSTS = [
|
|
|
6
9
|
'api.syntrologie.com',
|
|
7
10
|
'cdn.syntrologie.com',
|
|
8
11
|
'localhost',
|
|
9
|
-
'127.0.0.1'
|
|
12
|
+
'127.0.0.1',
|
|
10
13
|
];
|
|
11
14
|
/**
|
|
12
15
|
* Validates that a config URI is from an allowed host.
|
|
@@ -22,7 +25,7 @@ function validateConfigUri(uri) {
|
|
|
22
25
|
return false;
|
|
23
26
|
}
|
|
24
27
|
// Check against allowlist
|
|
25
|
-
const isAllowed = ALLOWED_CONFIG_HOSTS.some(host => parsed.hostname === host);
|
|
28
|
+
const isAllowed = ALLOWED_CONFIG_HOSTS.some((host) => parsed.hostname === host);
|
|
26
29
|
if (!isAllowed) {
|
|
27
30
|
console.warn('[SmartCanvas] Config URI host not in allowlist:', parsed.hostname);
|
|
28
31
|
return false;
|
|
@@ -48,7 +51,7 @@ function isSameOrigin(uri) {
|
|
|
48
51
|
return false;
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
|
-
export const resolveConfigUri = ({ configUri, experiments, featureKey =
|
|
54
|
+
export const resolveConfigUri = ({ configUri, experiments, featureKey = 'smart-canvas-config-uri', }) => {
|
|
52
55
|
var _a;
|
|
53
56
|
if (configUri)
|
|
54
57
|
return configUri;
|
|
@@ -57,21 +60,22 @@ export const resolveConfigUri = ({ configUri, experiments, featureKey = "smart-c
|
|
|
57
60
|
return fromFeature;
|
|
58
61
|
return undefined;
|
|
59
62
|
};
|
|
60
|
-
export const createCanvasConfigFetcher = ({ configUri, experiments, featureKey, credentials, configFeatureKey =
|
|
63
|
+
export const createCanvasConfigFetcher = ({ configUri, experiments, featureKey, credentials, configFeatureKey = 'smart-canvas-config', }) => {
|
|
61
64
|
return async () => {
|
|
62
65
|
var _a;
|
|
63
66
|
// First check if we have a direct config object from experiment platform
|
|
64
67
|
if (experiments && configFeatureKey) {
|
|
65
68
|
const directConfig = (_a = experiments.getFeatureValue) === null || _a === void 0 ? void 0 : _a.call(experiments, configFeatureKey, null);
|
|
66
69
|
if (directConfig && typeof directConfig === 'object') {
|
|
67
|
-
|
|
70
|
+
debug('SmartCanvas Config', 'Resolved config directly from feature flag', directConfig);
|
|
68
71
|
return directConfig;
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
// Fall back to URI-based fetching
|
|
72
75
|
const uri = resolveConfigUri({ configUri, experiments, featureKey });
|
|
73
76
|
if (!uri) {
|
|
74
|
-
|
|
77
|
+
debug('SmartCanvas Config', 'No config available — returning empty config');
|
|
78
|
+
return { tiles: [], overlays: [] };
|
|
75
79
|
}
|
|
76
80
|
// Security: Validate URI against allowlist
|
|
77
81
|
if (!validateConfigUri(uri)) {
|
|
@@ -80,11 +84,19 @@ export const createCanvasConfigFetcher = ({ configUri, experiments, featureKey,
|
|
|
80
84
|
// Security: Only send credentials to same-origin requests
|
|
81
85
|
// This prevents leaking cookies to third-party servers
|
|
82
86
|
const effectiveCredentials = credentials !== null && credentials !== void 0 ? credentials : (isSameOrigin(uri) ? 'include' : 'omit');
|
|
83
|
-
const response = await fetch(uri, {
|
|
87
|
+
const response = await fetch(uri, {
|
|
88
|
+
credentials: effectiveCredentials,
|
|
89
|
+
headers: {
|
|
90
|
+
'X-SDK-Version': SDK_VERSION,
|
|
91
|
+
'X-SDK-Schema-Version': SDK_SCHEMA_VERSION,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
84
94
|
if (!response.ok) {
|
|
85
95
|
throw new Error(`SmartCanvas: failed to fetch config (${response.status})`);
|
|
86
96
|
}
|
|
87
|
-
|
|
97
|
+
const config = await response.json();
|
|
98
|
+
debug('SmartCanvas Config', 'Fetched config from URI', config);
|
|
99
|
+
return config;
|
|
88
100
|
};
|
|
89
101
|
};
|
|
90
102
|
//# sourceMappingURL=configFetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configFetcher.js","sourceRoot":"","sources":["../src/configFetcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configFetcher.js","sourceRoot":"","sources":["../src/configFetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* - Notifying subscribers when context changes
|
|
7
7
|
* - Providing the current context snapshot
|
|
8
8
|
*/
|
|
9
|
-
import type { RuntimeContext, AnchorState, ContextChangeCallback, Unsubscribe, PageHistoryEntry } from
|
|
10
|
-
import type { TelemetryClient } from
|
|
11
|
-
import type { RoutesConfig } from
|
|
9
|
+
import type { RuntimeContext, AnchorState, ContextChangeCallback, Unsubscribe, PageHistoryEntry } from './types';
|
|
10
|
+
import type { TelemetryClient } from '../telemetry/types';
|
|
11
|
+
import type { RoutesConfig } from '../types';
|
|
12
12
|
export interface ContextManagerOptions {
|
|
13
13
|
/** Telemetry client for session ID */
|
|
14
14
|
telemetry?: TelemetryClient;
|
|
@@ -5,17 +5,17 @@ function createDefaultContext() {
|
|
|
5
5
|
const now = Date.now();
|
|
6
6
|
return {
|
|
7
7
|
page: {
|
|
8
|
-
url: typeof window !==
|
|
9
|
-
title: typeof document !==
|
|
8
|
+
url: typeof window !== 'undefined' ? window.location.href : '',
|
|
9
|
+
title: typeof document !== 'undefined' ? document.title : undefined,
|
|
10
10
|
},
|
|
11
11
|
session: {
|
|
12
|
-
sessionId:
|
|
12
|
+
sessionId: '',
|
|
13
13
|
startTs: now,
|
|
14
14
|
pageHistory: [],
|
|
15
15
|
},
|
|
16
16
|
viewport: {
|
|
17
|
-
width: typeof window !==
|
|
18
|
-
height: typeof window !==
|
|
17
|
+
width: typeof window !== 'undefined' ? window.innerWidth : 0,
|
|
18
|
+
height: typeof window !== 'undefined' ? window.innerHeight : 0,
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
21
|
}
|
|
@@ -62,15 +62,15 @@ function matchRoute(url, routes) {
|
|
|
62
62
|
*/
|
|
63
63
|
function matchPattern(pathname, pattern) {
|
|
64
64
|
// Normalize paths
|
|
65
|
-
const normalizedPath = pathname.replace(/\/$/,
|
|
66
|
-
const normalizedPattern = pattern.replace(/\/$/,
|
|
65
|
+
const normalizedPath = pathname.replace(/\/$/, '') || '/';
|
|
66
|
+
const normalizedPattern = pattern.replace(/\/$/, '') || '/';
|
|
67
67
|
// Exact match
|
|
68
68
|
if (normalizedPath === normalizedPattern)
|
|
69
69
|
return true;
|
|
70
70
|
// Convert pattern to regex
|
|
71
71
|
const regexPattern = normalizedPattern
|
|
72
|
-
.replace(/:[^/]+/g,
|
|
73
|
-
.replace(/\*/g,
|
|
72
|
+
.replace(/:[^/]+/g, '[^/]+') // :param -> [^/]+
|
|
73
|
+
.replace(/\*/g, '.*'); // * -> .*
|
|
74
74
|
const regex = new RegExp(`^${regexPattern}$`);
|
|
75
75
|
return regex.test(normalizedPath);
|
|
76
76
|
}
|
|
@@ -104,7 +104,7 @@ export class ContextManager {
|
|
|
104
104
|
// Add current page to history
|
|
105
105
|
this.addPageToHistory(this.context.page.url);
|
|
106
106
|
// Setup browser event listeners
|
|
107
|
-
if (typeof window !==
|
|
107
|
+
if (typeof window !== 'undefined') {
|
|
108
108
|
this.setupBrowserListeners();
|
|
109
109
|
}
|
|
110
110
|
}
|
|
@@ -171,14 +171,14 @@ export class ContextManager {
|
|
|
171
171
|
this.updateViewport();
|
|
172
172
|
}, 100);
|
|
173
173
|
};
|
|
174
|
-
window.addEventListener(
|
|
175
|
-
this.cleanupFns.push(() => window.removeEventListener(
|
|
174
|
+
window.addEventListener('resize', handleResize);
|
|
175
|
+
this.cleanupFns.push(() => window.removeEventListener('resize', handleResize));
|
|
176
176
|
// Navigation listener (popstate for back/forward)
|
|
177
177
|
const handlePopState = () => {
|
|
178
178
|
this.updatePage();
|
|
179
179
|
};
|
|
180
|
-
window.addEventListener(
|
|
181
|
-
this.cleanupFns.push(() => window.removeEventListener(
|
|
180
|
+
window.addEventListener('popstate', handlePopState);
|
|
181
|
+
this.cleanupFns.push(() => window.removeEventListener('popstate', handlePopState));
|
|
182
182
|
// History pushState/replaceState interception
|
|
183
183
|
const originalPushState = history.pushState.bind(history);
|
|
184
184
|
const originalReplaceState = history.replaceState.bind(history);
|
|
@@ -254,7 +254,7 @@ export class ContextManager {
|
|
|
254
254
|
callback(this.context, this.previousContext);
|
|
255
255
|
}
|
|
256
256
|
catch (err) {
|
|
257
|
-
console.error(
|
|
257
|
+
console.error('[ContextManager] Listener error:', err);
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../../src/context/ContextManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../../src/context/ContextManager.ts"],"names":[],"mappings":"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"}
|
package/dist/context/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Context module exports.
|
|
3
3
|
*/
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export { ContextManager, createContextManager } from
|
|
7
|
-
export type { ContextManagerOptions } from
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './schema';
|
|
6
|
+
export { ContextManager, createContextManager } from './ContextManager';
|
|
7
|
+
export type { ContextManagerOptions } from './ContextManager';
|
package/dist/context/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Context module exports.
|
|
3
3
|
*/
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export { ContextManager, createContextManager } from
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './schema';
|
|
6
|
+
export { ContextManager, createContextManager } from './ContextManager';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/context/schema.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Zod schemas for RuntimeContext validation.
|
|
3
3
|
*/
|
|
4
|
-
import { z } from
|
|
4
|
+
import { z } from 'zod';
|
|
5
5
|
export declare const PageContextZ: z.ZodObject<{
|
|
6
6
|
url: z.ZodString;
|
|
7
7
|
routeId: z.ZodOptional<z.ZodString>;
|
|
@@ -9,13 +9,13 @@ export declare const PageContextZ: z.ZodObject<{
|
|
|
9
9
|
locale: z.ZodOptional<z.ZodString>;
|
|
10
10
|
}, "strip", z.ZodTypeAny, {
|
|
11
11
|
url: string;
|
|
12
|
-
title?: string | undefined;
|
|
13
12
|
routeId?: string | undefined;
|
|
13
|
+
title?: string | undefined;
|
|
14
14
|
locale?: string | undefined;
|
|
15
15
|
}, {
|
|
16
16
|
url: string;
|
|
17
|
-
title?: string | undefined;
|
|
18
17
|
routeId?: string | undefined;
|
|
18
|
+
title?: string | undefined;
|
|
19
19
|
locale?: string | undefined;
|
|
20
20
|
}>;
|
|
21
21
|
export declare const PageHistoryEntryZ: z.ZodObject<{
|
|
@@ -103,8 +103,8 @@ export declare const AnchorStateZ: z.ZodObject<{
|
|
|
103
103
|
h: number;
|
|
104
104
|
}>>;
|
|
105
105
|
}, "strip", z.ZodTypeAny, {
|
|
106
|
-
present: boolean;
|
|
107
106
|
anchorId: string;
|
|
107
|
+
present: boolean;
|
|
108
108
|
visible?: boolean | undefined;
|
|
109
109
|
boundingBox?: {
|
|
110
110
|
x: number;
|
|
@@ -113,8 +113,8 @@ export declare const AnchorStateZ: z.ZodObject<{
|
|
|
113
113
|
h: number;
|
|
114
114
|
} | undefined;
|
|
115
115
|
}, {
|
|
116
|
-
present: boolean;
|
|
117
116
|
anchorId: string;
|
|
117
|
+
present: boolean;
|
|
118
118
|
visible?: boolean | undefined;
|
|
119
119
|
boundingBox?: {
|
|
120
120
|
x: number;
|
|
@@ -132,13 +132,13 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
132
132
|
locale: z.ZodOptional<z.ZodString>;
|
|
133
133
|
}, "strip", z.ZodTypeAny, {
|
|
134
134
|
url: string;
|
|
135
|
-
title?: string | undefined;
|
|
136
135
|
routeId?: string | undefined;
|
|
136
|
+
title?: string | undefined;
|
|
137
137
|
locale?: string | undefined;
|
|
138
138
|
}, {
|
|
139
139
|
url: string;
|
|
140
|
-
title?: string | undefined;
|
|
141
140
|
routeId?: string | undefined;
|
|
141
|
+
title?: string | undefined;
|
|
142
142
|
locale?: string | undefined;
|
|
143
143
|
}>;
|
|
144
144
|
session: z.ZodObject<{
|
|
@@ -200,8 +200,8 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
200
200
|
h: number;
|
|
201
201
|
}>>;
|
|
202
202
|
}, "strip", z.ZodTypeAny, {
|
|
203
|
-
present: boolean;
|
|
204
203
|
anchorId: string;
|
|
204
|
+
present: boolean;
|
|
205
205
|
visible?: boolean | undefined;
|
|
206
206
|
boundingBox?: {
|
|
207
207
|
x: number;
|
|
@@ -210,8 +210,8 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
210
210
|
h: number;
|
|
211
211
|
} | undefined;
|
|
212
212
|
}, {
|
|
213
|
-
present: boolean;
|
|
214
213
|
anchorId: string;
|
|
214
|
+
present: boolean;
|
|
215
215
|
visible?: boolean | undefined;
|
|
216
216
|
boundingBox?: {
|
|
217
217
|
x: number;
|
|
@@ -228,8 +228,8 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
228
228
|
};
|
|
229
229
|
page: {
|
|
230
230
|
url: string;
|
|
231
|
-
title?: string | undefined;
|
|
232
231
|
routeId?: string | undefined;
|
|
232
|
+
title?: string | undefined;
|
|
233
233
|
locale?: string | undefined;
|
|
234
234
|
};
|
|
235
235
|
session: {
|
|
@@ -241,8 +241,8 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
241
241
|
}[] | undefined;
|
|
242
242
|
};
|
|
243
243
|
anchors?: {
|
|
244
|
-
present: boolean;
|
|
245
244
|
anchorId: string;
|
|
245
|
+
present: boolean;
|
|
246
246
|
visible?: boolean | undefined;
|
|
247
247
|
boundingBox?: {
|
|
248
248
|
x: number;
|
|
@@ -259,8 +259,8 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
259
259
|
};
|
|
260
260
|
page: {
|
|
261
261
|
url: string;
|
|
262
|
-
title?: string | undefined;
|
|
263
262
|
routeId?: string | undefined;
|
|
263
|
+
title?: string | undefined;
|
|
264
264
|
locale?: string | undefined;
|
|
265
265
|
};
|
|
266
266
|
session: {
|
|
@@ -272,8 +272,8 @@ export declare const RuntimeContextZ: z.ZodObject<{
|
|
|
272
272
|
}[] | undefined;
|
|
273
273
|
};
|
|
274
274
|
anchors?: {
|
|
275
|
-
present: boolean;
|
|
276
275
|
anchorId: string;
|
|
276
|
+
present: boolean;
|
|
277
277
|
visible?: boolean | undefined;
|
|
278
278
|
boundingBox?: {
|
|
279
279
|
x: number;
|
|
@@ -294,8 +294,8 @@ export declare function validateRuntimeContext(data: unknown): z.SafeParseReturn
|
|
|
294
294
|
};
|
|
295
295
|
page: {
|
|
296
296
|
url: string;
|
|
297
|
-
title?: string | undefined;
|
|
298
297
|
routeId?: string | undefined;
|
|
298
|
+
title?: string | undefined;
|
|
299
299
|
locale?: string | undefined;
|
|
300
300
|
};
|
|
301
301
|
session: {
|
|
@@ -307,8 +307,8 @@ export declare function validateRuntimeContext(data: unknown): z.SafeParseReturn
|
|
|
307
307
|
}[] | undefined;
|
|
308
308
|
};
|
|
309
309
|
anchors?: {
|
|
310
|
-
present: boolean;
|
|
311
310
|
anchorId: string;
|
|
311
|
+
present: boolean;
|
|
312
312
|
visible?: boolean | undefined;
|
|
313
313
|
boundingBox?: {
|
|
314
314
|
x: number;
|
|
@@ -325,8 +325,8 @@ export declare function validateRuntimeContext(data: unknown): z.SafeParseReturn
|
|
|
325
325
|
};
|
|
326
326
|
page: {
|
|
327
327
|
url: string;
|
|
328
|
-
title?: string | undefined;
|
|
329
328
|
routeId?: string | undefined;
|
|
329
|
+
title?: string | undefined;
|
|
330
330
|
locale?: string | undefined;
|
|
331
331
|
};
|
|
332
332
|
session: {
|
|
@@ -338,8 +338,8 @@ export declare function validateRuntimeContext(data: unknown): z.SafeParseReturn
|
|
|
338
338
|
}[] | undefined;
|
|
339
339
|
};
|
|
340
340
|
anchors?: {
|
|
341
|
-
present: boolean;
|
|
342
341
|
anchorId: string;
|
|
342
|
+
present: boolean;
|
|
343
343
|
visible?: boolean | undefined;
|
|
344
344
|
boundingBox?: {
|
|
345
345
|
x: number;
|