@sparkletree/core 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +18 -19
  2. package/dist/analytics.d.ts +7 -1
  3. package/dist/analytics.d.ts.map +1 -1
  4. package/dist/analytics.js +2 -1
  5. package/dist/analytics.js.map +1 -1
  6. package/dist/client.d.ts +8 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +6 -6
  9. package/dist/client.js.map +1 -1
  10. package/dist/context.d.ts +8 -0
  11. package/dist/context.d.ts.map +1 -1
  12. package/dist/context.js +21 -0
  13. package/dist/context.js.map +1 -1
  14. package/dist/fragments.d.ts +21 -24
  15. package/dist/fragments.d.ts.map +1 -1
  16. package/dist/fragments.js +10 -7
  17. package/dist/fragments.js.map +1 -1
  18. package/dist/index.d.ts +5 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/protocol.d.ts +12 -1
  23. package/dist/protocol.d.ts.map +1 -1
  24. package/dist/protocol.js +5 -2
  25. package/dist/protocol.js.map +1 -1
  26. package/dist/server.d.ts +144 -0
  27. package/dist/server.d.ts.map +1 -0
  28. package/dist/server.js +463 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/slots.d.ts +66 -0
  31. package/dist/slots.d.ts.map +1 -0
  32. package/dist/slots.js +102 -0
  33. package/dist/slots.js.map +1 -0
  34. package/dist/state.d.ts +282 -239
  35. package/dist/state.d.ts.map +1 -1
  36. package/dist/state.js +434 -413
  37. package/dist/state.js.map +1 -1
  38. package/dist/variant.d.ts +70 -1
  39. package/dist/variant.d.ts.map +1 -1
  40. package/dist/variant.js +85 -1
  41. package/dist/variant.js.map +1 -1
  42. package/dist/visitorContext.d.ts +99 -0
  43. package/dist/visitorContext.d.ts.map +1 -0
  44. package/dist/visitorContext.js +84 -0
  45. package/dist/visitorContext.js.map +1 -0
  46. package/package.json +5 -1
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/dist/variant.d.ts CHANGED
@@ -32,6 +32,8 @@
32
32
  * campaign server-side are treated as separate experiments; addressing is the
33
33
  * caller's statement of intent.)
34
34
  */
35
+ import type { ContentSource } from "./wire.js";
36
+ import type { CopyField } from "./state.js";
35
37
  /**
36
38
  * How long a follower waits for the leader's stream before giving up and
37
39
  * requesting unpinned.
@@ -74,9 +76,72 @@ export interface FollowerReservation {
74
76
  variantId: Promise<string | undefined>;
75
77
  }
76
78
  export type VariantReservation = LeaderReservation | FollowerReservation;
79
+ /** One field as the visitor saw it: its text and where that text came from. */
80
+ export interface ShownCopy {
81
+ text: string;
82
+ source: ContentSource;
83
+ }
84
+ /**
85
+ * What one copy slot showed in this page view, kept so a later mount of the
86
+ * same slot shows exactly that again instead of holding and replacing it.
87
+ * Renderers read and write it through `VariantRegistry.slot`.
88
+ */
89
+ export interface SlotMemory {
90
+ /** When the slot first held blank on screen (`Date.now()`), or null. */
91
+ heldSince: number | null;
92
+ /** Per field, the copy the visitor saw. Null until something showed. */
93
+ shown: Partial<Record<CopyField, ShownCopy>> | null;
94
+ /** The variant and campaign the shown copy belongs to, when known. */
95
+ variantId: string | null;
96
+ campaignId: string | null;
97
+ /** The provenance the impression reports for the shown copy. */
98
+ contentSource: ContentSource | null;
99
+ /** The slot's impression has been recorded in this page view. */
100
+ impressionRecorded: boolean;
101
+ }
77
102
  export declare class VariantRegistry {
78
103
  private readonly pinned;
79
104
  private readonly pending;
105
+ private readonly shownFallbacks;
106
+ private readonly slots;
107
+ private currentView;
108
+ private readonly newViewListeners;
109
+ /**
110
+ * Run `listener` whenever a page view ends and a new one begins (a client
111
+ * navigation, `enterView` with a different view, or `reset` after use).
112
+ * Not for the page's first view: state a server render left for it stays.
113
+ * Returns the unsubscribe.
114
+ */
115
+ onNewView(listener: () => void): () => void;
116
+ /**
117
+ * The explicit page view the registry is scoped to, or null for the
118
+ * implicit view (the one `reset()` starts).
119
+ */
120
+ get viewId(): string | null;
121
+ /**
122
+ * Scope the registry to page view `viewId`. A different id than the
123
+ * current one starts a new page view: pins, reservations and slot
124
+ * memories of the old view are dropped (as `reset()` does) before
125
+ * anything is pinned for the new one. The same id again changes nothing,
126
+ * so calling it on every render is safe. Returns true when it started a
127
+ * new view.
128
+ */
129
+ enterView(viewId: string): boolean;
130
+ /**
131
+ * The memory of one copy slot in this page view, created empty on first
132
+ * use. `key` is the renderer's slot identity. Cleared with the view.
133
+ */
134
+ slot(key: string): SlotMemory;
135
+ /**
136
+ * Record that a slot's fallback has been shown in this page view (the hold
137
+ * ran out, or a server reservation revealed it). It is final for the rest
138
+ * of the page view: a later mount of the same slot — a re-render, a
139
+ * suspended boundary resolving — shows it again instead of holding, and
140
+ * no later stream replaces it. `key` is the renderer's slot identity.
141
+ */
142
+ markFallbackShown(key: string): void;
143
+ /** Has this slot's fallback already been shown in this page view? */
144
+ fallbackShown(key: string): boolean;
80
145
  /**
81
146
  * The variant to request for this pin key — the campaign id, or the surface
82
147
  * id for surface-only islands — if one is already pinned. Undefined means
@@ -104,7 +169,11 @@ export declare class VariantRegistry {
104
169
  * promise is already resolved — awaiting it costs one microtask.
105
170
  */
106
171
  reserve(key: string, timeoutMs?: number): VariantReservation;
107
- /** New page view. Call on client-side navigation. */
172
+ /**
173
+ * New page view. Call on client-side navigation, or scope the registry to
174
+ * explicit views with `enterView` (the provider does this for you when it
175
+ * is given a `serverContext` or a `viewKey`).
176
+ */
108
177
  reset(): void;
109
178
  }
110
179
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../src/variant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;;OAIG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAOzE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpC;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAO3C;;;;;;;;;OASG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAA+B,GAAG,kBAAkB;IA8CpF,qDAAqD;IACrD,KAAK,IAAI,IAAI;CAOd;AAoBD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,iBAAwB,CAAC"}
1
+ {"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../src/variant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;;OAIG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEzE,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;IACpD,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gEAAgE;IAChE,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,iEAAiE;IACjE,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAOD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAE1D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAOlC;;;OAGG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAgB7B;;;;;;OAMG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIpC,qEAAqE;IACrE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpC;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAO3C;;;;;;;;;OASG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAA+B,GAAG,kBAAkB;IA8CpF;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAcd;AAoBD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,iBAAwB,CAAC"}
package/dist/variant.js CHANGED
@@ -52,6 +52,77 @@ export const RESERVATION_TIMEOUT_MS = 31_000;
52
52
  export class VariantRegistry {
53
53
  pinned = new Map();
54
54
  pending = new Map();
55
+ shownFallbacks = new Set();
56
+ slots = new Map();
57
+ currentView = null;
58
+ newViewListeners = new Set();
59
+ /**
60
+ * Run `listener` whenever a page view ends and a new one begins (a client
61
+ * navigation, `enterView` with a different view, or `reset` after use).
62
+ * Not for the page's first view: state a server render left for it stays.
63
+ * Returns the unsubscribe.
64
+ */
65
+ onNewView(listener) {
66
+ this.newViewListeners.add(listener);
67
+ return () => {
68
+ this.newViewListeners.delete(listener);
69
+ };
70
+ }
71
+ /**
72
+ * The explicit page view the registry is scoped to, or null for the
73
+ * implicit view (the one `reset()` starts).
74
+ */
75
+ get viewId() {
76
+ return this.currentView;
77
+ }
78
+ /**
79
+ * Scope the registry to page view `viewId`. A different id than the
80
+ * current one starts a new page view: pins, reservations and slot
81
+ * memories of the old view are dropped (as `reset()` does) before
82
+ * anything is pinned for the new one. The same id again changes nothing,
83
+ * so calling it on every render is safe. Returns true when it started a
84
+ * new view.
85
+ */
86
+ enterView(viewId) {
87
+ if (viewId === this.currentView)
88
+ return false;
89
+ this.reset();
90
+ this.currentView = viewId;
91
+ return true;
92
+ }
93
+ /**
94
+ * The memory of one copy slot in this page view, created empty on first
95
+ * use. `key` is the renderer's slot identity. Cleared with the view.
96
+ */
97
+ slot(key) {
98
+ let memory = this.slots.get(key);
99
+ if (!memory) {
100
+ memory = {
101
+ heldSince: null,
102
+ shown: null,
103
+ variantId: null,
104
+ campaignId: null,
105
+ contentSource: null,
106
+ impressionRecorded: false,
107
+ };
108
+ this.slots.set(key, memory);
109
+ }
110
+ return memory;
111
+ }
112
+ /**
113
+ * Record that a slot's fallback has been shown in this page view (the hold
114
+ * ran out, or a server reservation revealed it). It is final for the rest
115
+ * of the page view: a later mount of the same slot — a re-render, a
116
+ * suspended boundary resolving — shows it again instead of holding, and
117
+ * no later stream replaces it. `key` is the renderer's slot identity.
118
+ */
119
+ markFallbackShown(key) {
120
+ this.shownFallbacks.add(key);
121
+ }
122
+ /** Has this slot's fallback already been shown in this page view? */
123
+ fallbackShown(key) {
124
+ return this.shownFallbacks.has(key);
125
+ }
55
126
  /**
56
127
  * The variant to request for this pin key — the campaign id, or the surface
57
128
  * id for surface-only islands — if one is already pinned. Undefined means
@@ -132,14 +203,27 @@ export class VariantRegistry {
132
203
  },
133
204
  };
134
205
  }
135
- /** New page view. Call on client-side navigation. */
206
+ /**
207
+ * New page view. Call on client-side navigation, or scope the registry to
208
+ * explicit views with `enterView` (the provider does this for you when it
209
+ * is given a `serverContext` or a `viewKey`).
210
+ */
136
211
  reset() {
212
+ // A real switch (something already belonged to a view), not the first
213
+ // view's own setup: tell listeners a new view began.
214
+ const switching = this.currentView !== null || this.slots.size > 0 || this.pinned.size > 0;
215
+ this.currentView = null;
137
216
  this.pinned.clear();
217
+ this.shownFallbacks.clear();
218
+ this.slots.clear();
138
219
  // Anyone still waiting belongs to the OLD page view; release them
139
220
  // unpinned rather than leaving promises to dangle past the navigation.
140
221
  for (const entry of this.pending.values())
141
222
  entry.settle(undefined);
142
223
  this.pending.clear();
224
+ if (switching)
225
+ for (const listener of [...this.newViewListeners])
226
+ listener();
143
227
  }
144
228
  }
145
229
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"variant.js","sourceRoot":"","sources":["../src/variant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variant.js","sourceRoot":"","sources":["../src/variant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The visitor context both halves of a page agree on.
3
+ *
4
+ * Live copy is cached per context, so the copy a server reads for a request
5
+ * and the copy the browser's stream later replays or fills must be keyed by
6
+ * the same values. This module is the one place those values are bucketed:
7
+ * the browser provider and the server helper both call the functions below,
8
+ * so a bucket boundary cannot drift between them.
9
+ *
10
+ * Everything here is safe in a browser bundle: no network, no secrets.
11
+ */
12
+ import type { ContentSource } from "./wire.js";
13
+ /** The four time-of-day buckets the SDK sends. */
14
+ export type TimeOfDay = "night" | "morning" | "afternoon" | "evening";
15
+ /** The device buckets the SDK sends. */
16
+ export type DeviceType = "mobile" | "desktop";
17
+ /**
18
+ * The viewport media query that makes a browser "mobile". Narrower than
19
+ * 768 CSS pixels is mobile; everything else, tablets included, is desktop.
20
+ */
21
+ export declare const MOBILE_VIEWPORT_QUERY = "(max-width: 767px)";
22
+ /**
23
+ * Bucket an hour of the day (0–23, in the visitor's time zone): before 6 is
24
+ * night, before 12 morning, before 18 afternoon, the rest evening.
25
+ */
26
+ export declare function timeOfDayForHour(hour: number): TimeOfDay;
27
+ /** The device bucket for a viewport that does or does not match `MOBILE_VIEWPORT_QUERY`. */
28
+ export declare function deviceTypeForViewport(matchesMobileQuery: boolean): DeviceType;
29
+ /** True for an IANA time zone name this runtime knows, such as `Europe/Stockholm`. */
30
+ export declare function isValidTimeZone(timeZone: string): boolean;
31
+ /**
32
+ * The hour (0–23) of `date` in `timeZone`. Without a time zone, the
33
+ * runtime's local hour (in a browser, the visitor's own).
34
+ */
35
+ export declare function hourInTimeZone(date: Date, timeZone?: string): number;
36
+ /**
37
+ * The visitor context a server derived for one request, for the browser to
38
+ * adopt for the same page view (`SparkletreeProvider`'s `serverContext`).
39
+ *
40
+ * The browser then sends exactly these values instead of reading its own, so
41
+ * its streams and the copy they cache are keyed the way the server read
42
+ * them. A value the server left out is left out by the browser too.
43
+ */
44
+ export interface ServerContext {
45
+ deviceType?: DeviceType;
46
+ timeOfDay?: TimeOfDay;
47
+ /** IANA time zone, e.g. `Europe/Stockholm`. */
48
+ timezone?: string;
49
+ /** The visitor's preferred language tag, e.g. `sv-SE`. */
50
+ language?: string;
51
+ /**
52
+ * The variant the server read for, by pin key: the campaign id, or the
53
+ * surface id for a surface-addressed island. Pinned for the page view
54
+ * before any stream opens, so every island of that campaign or surface
55
+ * tells the same story the server rendered.
56
+ */
57
+ pins?: Record<string, string>;
58
+ /**
59
+ * Identifies the page view the server rendered. The provider scopes
60
+ * variant pins, slot memory and impressions to it, so a new server render
61
+ * (a navigation, a refresh) is a new page view in the browser too, and its
62
+ * pins are in place before any island's stream opens.
63
+ */
64
+ viewId?: string;
65
+ }
66
+ /** The context keys a `ServerContext` decides for the page view. */
67
+ export declare const SERVER_CONTEXT_KEYS: readonly ["deviceType", "timeOfDay", "timezone", "language"];
68
+ /**
69
+ * `context` with the server's decisions applied: each of
70
+ * `SERVER_CONTEXT_KEYS` takes the server's value, or is removed when the
71
+ * server had none. Without a `serverContext`, `context` is returned as is.
72
+ */
73
+ export declare function applyServerContext(context: Record<string, unknown>, serverContext: ServerContext | null | undefined): Record<string, unknown>;
74
+ /**
75
+ * Copy already produced for this view, ready for the `initialCopy` option of
76
+ * `useIsland`, `Hero` and `Cta`. It renders visibly from the first frame,
77
+ * settled and final.
78
+ */
79
+ export interface InitialCopy {
80
+ copy: {
81
+ greeting?: string;
82
+ headline?: string;
83
+ body?: string;
84
+ cta?: string;
85
+ };
86
+ /** Where the copy came from: `cached` for copy read from the live-copy cache. */
87
+ contentSource: ContentSource;
88
+ /** The variant the copy belongs to. Pins the page's variant. */
89
+ variantId?: string;
90
+ /** The campaign the copy belongs to. Impressions attribute to it. */
91
+ campaignId?: string;
92
+ /**
93
+ * For cached copy: `fresh`, or `stale` when it was past its freshness
94
+ * window but still within its serving window. Reported with the
95
+ * impression.
96
+ */
97
+ freshness?: "fresh" | "stale";
98
+ }
99
+ //# sourceMappingURL=visitorContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitorContext.d.ts","sourceRoot":"","sources":["../src/visitorContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAEtE,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAKxD;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,GAAG,UAAU,CAE7E;AAID,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,8DAA+D,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,iFAAiF;IACjF,aAAa,EAAE,aAAa,CAAC;IAC7B,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * The visitor context both halves of a page agree on.
3
+ *
4
+ * Live copy is cached per context, so the copy a server reads for a request
5
+ * and the copy the browser's stream later replays or fills must be keyed by
6
+ * the same values. This module is the one place those values are bucketed:
7
+ * the browser provider and the server helper both call the functions below,
8
+ * so a bucket boundary cannot drift between them.
9
+ *
10
+ * Everything here is safe in a browser bundle: no network, no secrets.
11
+ */
12
+ /**
13
+ * The viewport media query that makes a browser "mobile". Narrower than
14
+ * 768 CSS pixels is mobile; everything else, tablets included, is desktop.
15
+ */
16
+ export const MOBILE_VIEWPORT_QUERY = "(max-width: 767px)";
17
+ /**
18
+ * Bucket an hour of the day (0–23, in the visitor's time zone): before 6 is
19
+ * night, before 12 morning, before 18 afternoon, the rest evening.
20
+ */
21
+ export function timeOfDayForHour(hour) {
22
+ if (hour < 6)
23
+ return "night";
24
+ if (hour < 12)
25
+ return "morning";
26
+ if (hour < 18)
27
+ return "afternoon";
28
+ return "evening";
29
+ }
30
+ /** The device bucket for a viewport that does or does not match `MOBILE_VIEWPORT_QUERY`. */
31
+ export function deviceTypeForViewport(matchesMobileQuery) {
32
+ return matchesMobileQuery ? "mobile" : "desktop";
33
+ }
34
+ const TIME_ZONE_PATTERN = /^[A-Za-z0-9_+/-]{1,64}$/;
35
+ /** True for an IANA time zone name this runtime knows, such as `Europe/Stockholm`. */
36
+ export function isValidTimeZone(timeZone) {
37
+ if (!TIME_ZONE_PATTERN.test(timeZone))
38
+ return false;
39
+ try {
40
+ new Intl.DateTimeFormat("en-US", { timeZone });
41
+ return true;
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ /**
48
+ * The hour (0–23) of `date` in `timeZone`. Without a time zone, the
49
+ * runtime's local hour (in a browser, the visitor's own).
50
+ */
51
+ export function hourInTimeZone(date, timeZone) {
52
+ if (!timeZone)
53
+ return date.getHours();
54
+ const hour = new Intl.DateTimeFormat("en-US", {
55
+ timeZone,
56
+ hour: "numeric",
57
+ hourCycle: "h23",
58
+ })
59
+ .formatToParts(date)
60
+ .find((part) => part.type === "hour")?.value;
61
+ const parsed = Number.parseInt(hour ?? "", 10);
62
+ return Number.isFinite(parsed) ? parsed % 24 : date.getUTCHours();
63
+ }
64
+ /** The context keys a `ServerContext` decides for the page view. */
65
+ export const SERVER_CONTEXT_KEYS = ["deviceType", "timeOfDay", "timezone", "language"];
66
+ /**
67
+ * `context` with the server's decisions applied: each of
68
+ * `SERVER_CONTEXT_KEYS` takes the server's value, or is removed when the
69
+ * server had none. Without a `serverContext`, `context` is returned as is.
70
+ */
71
+ export function applyServerContext(context, serverContext) {
72
+ if (!serverContext)
73
+ return context;
74
+ const next = { ...context };
75
+ for (const key of SERVER_CONTEXT_KEYS) {
76
+ const value = serverContext[key];
77
+ if (typeof value === "string" && value !== "")
78
+ next[key] = value;
79
+ else
80
+ delete next[key];
81
+ }
82
+ return next;
83
+ }
84
+ //# sourceMappingURL=visitorContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitorContext.js","sourceRoot":"","sources":["../src/visitorContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,WAAW,CAAC;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,qBAAqB,CAAC,kBAA2B;IAC/D,OAAO,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAEpD,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAU,EAAE,QAAiB;IAC1D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC5C,QAAQ;QACR,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;KACjB,CAAC;SACC,aAAa,CAAC,IAAI,CAAC;SACnB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACpE,CAAC;AAiCD,oEAAoE;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAEhG;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAgC,EAChC,aAA+C;IAE/C,IAAI,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC;IACnC,MAAM,IAAI,GAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;YAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparkletree/core",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Framework-agnostic core for the SparkleTree SDK: wire protocol, copy choreography, theme, analytics, audio.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -11,6 +11,10 @@
11
11
  ".": {
12
12
  "types": "./dist/index.d.ts",
13
13
  "default": "./dist/index.js"
14
+ },
15
+ "./server": {
16
+ "types": "./dist/server.d.ts",
17
+ "default": "./dist/server.js"
14
18
  }
15
19
  },
16
20
  "files": [