@ada-support/web-storage 1.4.7 → 1.5.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.
@@ -6,11 +6,21 @@ import type { AdaFunctionalStorageValue } from "./functional-storage";
6
6
  * interface up to its first `}`, so an inline object value would truncate the parse.
7
7
  */
8
8
  export interface MessagingAuthState {
9
- ownerChatterToken?: string;
10
- messagingToken: string;
11
- messagingTokenExpiresAt: number;
12
- sessionRefreshToken: string;
13
- refreshGeneration: number;
9
+ ownerChatterToken?: string;
10
+ messagingToken: string;
11
+ messagingTokenExpiresAt: number;
12
+ sessionRefreshToken: string;
13
+ refreshGeneration: number;
14
+ }
15
+
16
+ /**
17
+ * When the live-chat pair (`inLiveChat`/`liveChatPending`) last changed, and to what.
18
+ * Named for the same reason as `MessagingAuthState` above — `generate-html.ts` truncates
19
+ * an inline object value at its first `}`.
20
+ */
21
+ export interface LiveChatTransition {
22
+ open: boolean;
23
+ at: number;
14
24
  }
15
25
 
16
26
  /**
@@ -20,113 +30,117 @@ export interface MessagingAuthState {
20
30
  *
21
31
  * The interface is being parsed by `./src/cli/generate-html.ts` script.
22
32
  * The format of code here must be consistent, i.e.
23
- * each key should have a comment, the key name must be quoted, and keys must be separated by an empty line.
33
+ * each key should have a comment, and keys must be separated by an empty line.
34
+ * Quoting the key name is optional — the parser accepts either form.
24
35
  */
25
36
  export interface StorageValueByKey {
26
- /** Used to store the Web SDK version assigned to a user. */
27
- "ada-embed-assigned-version": string;
37
+ /** Used to store the Web SDK version assigned to a user. */
38
+ "ada-embed-assigned-version": string;
39
+
40
+ /** Used to store information about current versions of Web SDK available (“canary” or “stable”). */
41
+ "ada-embed-manifest-cache": string;
28
42
 
29
- /** Used to store information about current versions of Web SDK available (“canary” or “stable”). */
30
- "ada-embed-manifest-cache": string;
43
+ /** Used to store the Chat version assigned to a user. */
44
+ "ada-embed_chat-assigned-version": string;
31
45
 
32
- /** Used to store the Chat version assigned to a user. */
33
- "ada-embed_chat-assigned-version": string;
46
+ /** Used to store information about current versions of Chat available (“canary” or “stable”). */
47
+ "ada-embed_chat-manifest-cache": string;
34
48
 
35
- /** Used to store information about current versions of Chat available (“canary” or “stable”). */
36
- "ada-embed_chat-manifest-cache": string;
49
+ /** Used to determine whether chatter session is expired. */
50
+ "ada-embed_chatter-created": string;
37
51
 
38
- /** Used to determine whether chatter session is expired. */
39
- "ada-embed_chatter-created": string;
52
+ /** Used to determine if the drawer was opened previously so when users navigate to other pages we can automatically open chat. */
53
+ "ada-embed_is-drawer-open": boolean;
40
54
 
41
- /** Used to determine if the drawer was opened previously so when users navigate to other pages we can automatically open chat. */
42
- "ada-embed_is-drawer-open": boolean;
55
+ /** Used to cache Zendesk tags assigned to a conversation. */
56
+ "ada-embed_zd-previous-tags": string;
43
57
 
44
- /** Used to cache Zendesk tags assigned to a conversation. */
45
- "ada-embed_zd-previous-tags": string;
58
+ /** Stores Zendesk session id. */
59
+ "ada-embed_zd-session-id": string;
46
60
 
47
- /** Stores Zendesk session id. */
48
- "ada-embed_zd-session-id": string;
61
+ /** Used to determine whether Zendesk session is expired. */
62
+ "ada-embed_zd-messaging-chatter-created": string;
49
63
 
50
- /** Used to determine whether Zendesk session is expired. */
51
- "ada-embed_zd-messaging-chatter-created": string;
64
+ /** Stores Zendesk internal user id. */
65
+ "ada-embed_zd-messaging-external-user-id": string;
52
66
 
53
- /** Stores Zendesk internal user id. */
54
- "ada-embed_zd-messaging-external-user-id": string;
67
+ /** Used to store general information about Ada application state. */
68
+ "ada-functional-storage": Partial<AdaFunctionalStorageValue>;
55
69
 
56
- /** Used to store general information about Ada application state. */
57
- "ada-functional-storage": Partial<AdaFunctionalStorageValue>;
70
+ /** Used to identify the user within Ada. */
71
+ chatter: string;
58
72
 
59
- /** Used to identify the user within Ada. */
60
- "chatter": string;
73
+ /** Used to determine whether chatter session is expired. This is stored on Ada domain. */
74
+ created: string;
61
75
 
62
- /** Used to determine whether chatter session is expired. This is stored on Ada domain. */
63
- "created": string;
76
+ /** Used for live chat messaging functionality. */
77
+ delayMessageAfterLiveChatEndTimeStamp: number;
64
78
 
65
- /** Used for live chat messaging functionality. */
66
- "delayMessageAfterLiveChatEndTimeStamp": number;
79
+ /** Indicates whether user is connected to a live agent. */
80
+ inLiveChat: boolean;
67
81
 
68
- /** Indicates whether user is connected to a live agent. */
69
- "inLiveChat": boolean;
82
+ /** Indicates whether user is waiting to connect to a live agent. */
83
+ liveChatPending: boolean;
70
84
 
71
- /** Indicates whether user is waiting to connect to a live agent. */
72
- "liveChatPending": boolean;
85
+ /** Records when the live-agent connection state above last changed, so another Ada product on the same domain can tell a current handoff from a stale flag. */
86
+ liveChatTransition: LiveChatTransition;
73
87
 
74
- /** Used to implement Chat reconnection after an interruption. */
75
- "netDisruptionMsgStartTime": number;
88
+ /** Used to implement Chat reconnection after an interruption. */
89
+ netDisruptionMsgStartTime: number;
76
90
 
77
- /** Stores Chat iFrame parent window origin. */
78
- "parentOrigin": string;
91
+ /** Stores Chat iFrame parent window origin. */
92
+ parentOrigin: string;
79
93
 
80
- /** Used to cache Zendesk tags assigned to a conversation. This is stored on Ada domain. */
81
- "previousZDTags": string;
94
+ /** Used to cache Zendesk tags assigned to a conversation. This is stored on Ada domain. */
95
+ previousZDTags: string;
82
96
 
83
- /** Used for Zendesk authentication functionality. */
84
- "previouslyAuthenticated": boolean;
97
+ /** Used for Zendesk authentication functionality. */
98
+ previouslyAuthenticated: boolean;
85
99
 
86
- /** Used for chatter authentication. */
87
- "ada-embed_session-token": string;
100
+ /** Used for chatter authentication. */
101
+ "ada-embed_session-token": string;
88
102
 
89
- /** Stores the messaging authentication state (its owner chatter, a short-lived messaging access token and expiry, a rotating session refresh token, and a refresh counter) used to authenticate the visitor's generative chat session with Ada. Set on the bot's Ada subdomain. */
90
- "messagingAuthState": MessagingAuthState;
103
+ /** Stores the messaging authentication state (its owner chatter, a short-lived messaging access token and expiry, a rotating session refresh token, and a refresh counter) used to authenticate the visitor's generative chat session with Ada. Set on the bot's Ada subdomain. */
104
+ messagingAuthState: MessagingAuthState;
91
105
 
92
- /** Used to implement Chat reconnection after an interruption. */
93
- "backoffTimeout": number;
106
+ /** Used to implement Chat reconnection after an interruption. */
107
+ backoffTimeout: number;
94
108
 
95
- /** Used during Oracle handoffs to indicate whether the agent has sent a request for a secret message. Allows the state to persist between page changes. */
96
- "secretButton": string;
109
+ /** Used during Oracle handoffs to indicate whether the agent has sent a request for a secret message. Allows the state to persist between page changes. */
110
+ secretButton: string;
97
111
 
98
- /** Used to keep the builder session active for 24 hours before authentication is required again. Note this is only added if a chatter has logged into the dashboard. */
99
- "session": string;
112
+ /** Used to keep the builder session active for 24 hours before authentication is required again. Note this is only added if a chatter has logged into the dashboard. */
113
+ session: string;
100
114
 
101
- /** Used for chatter authentication. This is stored on Ada domain. */
102
- "sessionToken": string;
115
+ /** Used for chatter authentication. This is stored on Ada domain. */
116
+ sessionToken: string;
103
117
 
104
- /** Used to default the test bot to the previously tested modality */
105
- "testBotModality": "messaging" | "voice" | undefined;
118
+ /** Used to default the test bot to the previously tested modality */
119
+ testBotModality: "messaging" | "voice" | undefined;
106
120
 
107
- /** Used for voice chat functionality in the bot builder dashboard */
108
- "testBotPhoneNumber": string;
121
+ /** Used for voice chat functionality in the bot builder dashboard */
122
+ testBotPhoneNumber: string;
109
123
 
110
- /** Used for Zendesk authentication functionality. */
111
- "zdAuthChatPending": boolean;
124
+ /** Used for Zendesk authentication functionality. */
125
+ zdAuthChatPending: boolean;
112
126
 
113
- /** Used for Zendesk SDK functionality. */
114
- "zdCid": string;
127
+ /** Used for Zendesk SDK functionality. */
128
+ zdCid: string;
115
129
 
116
- /** Used for Zendesk SDK functionality. */
117
- "zdCStore": string;
130
+ /** Used for Zendesk SDK functionality. */
131
+ zdCStore: string;
118
132
 
119
- /** Used for Zendesk SDK functionality. */
120
- "zdMessagingExternalUserId": string;
133
+ /** Used for Zendesk SDK functionality. */
134
+ zdMessagingExternalUserId: string;
121
135
 
122
- /** Used for Zendesk SDK functionality. */
123
- "zdMessagingChatterCreated": string;
136
+ /** Used for Zendesk SDK functionality. */
137
+ zdMessagingChatterCreated: string;
124
138
 
125
- /** Used for Zendesk SDK functionality. */
126
- "zdSessionId": string;
139
+ /** Used for Zendesk SDK functionality. */
140
+ zdSessionId: string;
127
141
 
128
- /** Used for Zendesk authentication functionality. */
129
- "zd_isChatterAuthenticated": boolean;
142
+ /** Used for Zendesk authentication functionality. */
143
+ zd_isChatterAuthenticated: boolean;
130
144
  }
131
145
 
132
146
  export type StorageKey = keyof StorageValueByKey;
@@ -1,9 +1,11 @@
1
1
  interface WebStorageItem {
2
- keyName: string;
3
- description: string;
4
- type: "Web Storage" | "Cookie";
5
- purpose: ReadonlyArray<"Essential" | "Functional" | "Security" | "Analytics" | "Marketing">;
6
- duration: string;
2
+ keyName: string;
3
+ description: string;
4
+ type: "Web Storage" | "Cookie";
5
+ purpose: ReadonlyArray<
6
+ "Essential" | "Functional" | "Security" | "Analytics" | "Marketing"
7
+ >;
8
+ duration: string;
7
9
  }
8
10
 
9
11
  /**
@@ -11,204 +13,209 @@ interface WebStorageItem {
11
13
  * but must include in the list: https://static.ada.support/ada-web-storage-list.html
12
14
  */
13
15
  export const THIRD_PARTY_ITEMS: WebStorageItem[] = [
14
- {
15
- keyName: "vuid",
16
- description: "Used by Vimeo to store the user’s usage history (loaded only if a video has been included).",
17
- type: "Cookie",
18
- duration: "2 Years",
19
- purpose: ["Functional"],
20
- },
21
- {
22
- keyName: "_dd_s",
23
- description: "Used to monitor user sessions for DataDog RUM Tracking.",
24
- type: "Cookie",
25
- duration: "10-15 Minutes",
26
- purpose: ["Functional", "Security"],
27
- },
28
- {
29
- keyName: "fs_uid",
30
- description: "Used to identify and distinguish data for each user",
31
- type: "Cookie",
32
- duration: "3 Months",
33
- purpose: ["Analytics"],
34
- },
35
- {
36
- keyName: "pusherTransportTLS",
37
- description: "Used by Pusher API for realtime messaging.",
38
- type: "Web Storage",
39
- duration: "Persistent",
40
- purpose: ["Essential"],
41
- },
42
- {
43
- keyName: "__cfruid",
44
- description: "Used by Zendesk Messaging to filter malicious web traffic through Cloudflare",
45
- type: "Cookie",
46
- duration: "Session (as long as the browser application is open)",
47
- purpose: ["Essential"],
48
- },
49
- {
50
- keyName: "_MUTEX_LOCK_X_zendeskSessionLock",
51
- description: "Used by FastMutex for Zendesk Chat sessions.",
52
- type: "Web Storage",
53
- duration: "Duration of live agent chat",
54
- purpose: ["Essential"],
55
- },
56
- {
57
- keyName: "__Secure-[alphanumeric ID]",
58
- description: "Used by Youtube to deliver relevant advertisements",
59
- type: "Cookie",
60
- duration: "1 Year",
61
- purpose: ["Marketing"],
62
- },
63
- {
64
- keyName: "HSID",
65
- description: "Youtube uses this cookie for security purposes in order to block many types of web attacks",
66
- type: "Cookie",
67
- duration: "1 Year",
68
- purpose: ["Security"],
69
- },
70
- {
71
- keyName: "SSID",
72
- description: "Youtube uses this cookie for security purposes in order to block many types of web attacks",
73
- type: "Cookie",
74
- duration: "1 Year",
75
- purpose: ["Security"],
76
- },
77
- {
78
- keyName: "VISITOR_INFO1_LIVE",
79
- description: "Used by Youtube to evaluate the user's network capabilities",
80
- type: "Cookie",
81
- duration: "6 months",
82
- purpose: ["Functional"],
83
- },
84
- {
85
- keyName: "PREF",
86
- description: "Used by Youtube to store user preferences",
87
- type: "Cookie",
88
- duration: "8 months",
89
- purpose: ["Marketing"],
90
- },
91
- {
92
- keyName: "SIDCC",
93
- description: "Used by Youtube to identify trusted web traffic",
94
- type: "Cookie",
95
- duration: "1 Year",
96
- purpose: ["Security"],
97
- },
98
- {
99
- keyName: "YSC",
100
- description: "Used by Youtube to store user interactions",
101
- type: "Cookie",
102
- duration: "Session (as long as the browser application is open)",
103
- purpose: ["Marketing"],
104
- },
105
- {
106
- keyName: "SID",
107
- description: "Used by Youtube to provide advertisement targeting",
108
- type: "Cookie",
109
- duration: "2 Years",
110
- purpose: ["Marketing"],
111
- },
112
- {
113
- keyName: "SAPISID",
114
- description: "Used by Youtube to link content to your Google account",
115
- type: "Cookie",
116
- duration: "2 Years",
117
- purpose: ["Analytics"],
118
- },
119
- {
120
- keyName: "APISID",
121
- description: "Used by Youtube to gather information on played videos",
122
- type: "Cookie",
123
- duration: "1 Year",
124
- purpose: ["Analytics"],
125
- },
126
- {
127
- keyName: "wide",
128
- description: "Used by Youtube to store user preferences",
129
- type: "Cookie",
130
- duration: "Session (as long as the browser application is open)",
131
- purpose: ["Functional"],
132
- },
133
- {
134
- keyName: "__cf_bm",
135
- description: "Used by Vimeo to filter bots",
136
- type: "Cookie",
137
- duration: "1 Year",
138
- purpose: ["Analytics"],
139
- },
140
- {
141
- keyName: "_GRECAPTCHA",
142
- description: "Used by Calendly to prevent spamming",
143
- type: "Cookie",
144
- duration: "6 months",
145
- purpose: ["Functional"],
146
- },
147
- {
148
- keyName: "_ga",
149
- description: "Used by Calendly to track page views",
150
- type: "Cookie",
151
- duration: "1 Year",
152
- purpose: ["Analytics"],
153
- },
154
- {
155
- keyName: "_hp2_id.[user_id]",
156
- description: "Used by Calendly to gather page interactions of users",
157
- type: "Cookie",
158
- duration: "1 Year",
159
- purpose: ["Analytics"],
160
- },
161
- {
162
- keyName: "_calendly_session",
163
- description: "Used by Calendly to store user's preferences",
164
- type: "Cookie",
165
- duration: "15 days",
166
- purpose: ["Functional"],
167
- },
168
- {
169
- keyName: "__stripe_mid",
170
- description: "Used by Calendly to prevent fraudulent transactions",
171
- type: "Cookie",
172
- duration: "1 Year",
173
- purpose: ["Functional"],
174
- },
175
- {
176
- keyName: "OptanonAlertBoxClosed",
177
- description: "Used by Calendly to store OneTrust cookie consent preferences",
178
- type: "Cookie",
179
- duration: "1 Year",
180
- purpose: ["Functional"],
181
- },
182
- {
183
- keyName: "OptanonConsent",
184
- description: "Used by Calendly to store OneTrust cookie consent preferences",
185
- type: "Cookie",
186
- duration: "2 Year",
187
- purpose: ["Functional"],
188
- },
189
- {
190
- keyName: "LaunchDarkly_[alphanumeric ID]_[alphanumeric ID]",
191
- description:
192
- "Used by LaunchDarkly to cache feature flag values for the chat widget. Scoped per bot (client_handle), not per end-user.",
193
- type: "Web Storage",
194
- duration: "Persistent",
195
- purpose: ["Functional"],
196
- },
197
- {
198
- keyName: "LaunchDarkly_[alphanumeric ID]_ContextIndex",
199
- description:
200
- "Used by LaunchDarkly to index evaluation contexts (bots) that have fetched feature flags for the chat widget.",
201
- type: "Web Storage",
202
- duration: "Persistent",
203
- purpose: ["Functional"],
204
- },
205
- {
206
- keyName: "LaunchDarkly_[alphanumeric ID]_[alphanumeric ID]_freshness",
207
- description:
208
- "Used by LaunchDarkly to record when the associated cached feature flag values were last refreshed. Paired with the flag cache entry.",
209
- type: "Web Storage",
210
- duration: "Persistent",
211
- purpose: ["Functional"],
212
- },
213
-
16
+ {
17
+ keyName: "vuid",
18
+ description:
19
+ "Used by Vimeo to store the user’s usage history (loaded only if a video has been included).",
20
+ type: "Cookie",
21
+ duration: "2 Years",
22
+ purpose: ["Functional"],
23
+ },
24
+ {
25
+ keyName: "_dd_s",
26
+ description: "Used to monitor user sessions for DataDog RUM Tracking.",
27
+ type: "Cookie",
28
+ duration: "10-15 Minutes",
29
+ purpose: ["Functional", "Security"],
30
+ },
31
+ {
32
+ keyName: "fs_uid",
33
+ description: "Used to identify and distinguish data for each user",
34
+ type: "Cookie",
35
+ duration: "3 Months",
36
+ purpose: ["Analytics"],
37
+ },
38
+ {
39
+ keyName: "pusherTransportTLS",
40
+ description: "Used by Pusher API for realtime messaging.",
41
+ type: "Web Storage",
42
+ duration: "Persistent",
43
+ purpose: ["Essential"],
44
+ },
45
+ {
46
+ keyName: "__cfruid",
47
+ description:
48
+ "Used by Zendesk Messaging to filter malicious web traffic through Cloudflare",
49
+ type: "Cookie",
50
+ duration: "Session (as long as the browser application is open)",
51
+ purpose: ["Essential"],
52
+ },
53
+ {
54
+ keyName: "_MUTEX_LOCK_X_zendeskSessionLock",
55
+ description: "Used by FastMutex for Zendesk Chat sessions.",
56
+ type: "Web Storage",
57
+ duration: "Duration of live agent chat",
58
+ purpose: ["Essential"],
59
+ },
60
+ {
61
+ keyName: "__Secure-[alphanumeric ID]",
62
+ description: "Used by Youtube to deliver relevant advertisements",
63
+ type: "Cookie",
64
+ duration: "1 Year",
65
+ purpose: ["Marketing"],
66
+ },
67
+ {
68
+ keyName: "HSID",
69
+ description:
70
+ "Youtube uses this cookie for security purposes in order to block many types of web attacks",
71
+ type: "Cookie",
72
+ duration: "1 Year",
73
+ purpose: ["Security"],
74
+ },
75
+ {
76
+ keyName: "SSID",
77
+ description:
78
+ "Youtube uses this cookie for security purposes in order to block many types of web attacks",
79
+ type: "Cookie",
80
+ duration: "1 Year",
81
+ purpose: ["Security"],
82
+ },
83
+ {
84
+ keyName: "VISITOR_INFO1_LIVE",
85
+ description: "Used by Youtube to evaluate the user's network capabilities",
86
+ type: "Cookie",
87
+ duration: "6 months",
88
+ purpose: ["Functional"],
89
+ },
90
+ {
91
+ keyName: "PREF",
92
+ description: "Used by Youtube to store user preferences",
93
+ type: "Cookie",
94
+ duration: "8 months",
95
+ purpose: ["Marketing"],
96
+ },
97
+ {
98
+ keyName: "SIDCC",
99
+ description: "Used by Youtube to identify trusted web traffic",
100
+ type: "Cookie",
101
+ duration: "1 Year",
102
+ purpose: ["Security"],
103
+ },
104
+ {
105
+ keyName: "YSC",
106
+ description: "Used by Youtube to store user interactions",
107
+ type: "Cookie",
108
+ duration: "Session (as long as the browser application is open)",
109
+ purpose: ["Marketing"],
110
+ },
111
+ {
112
+ keyName: "SID",
113
+ description: "Used by Youtube to provide advertisement targeting",
114
+ type: "Cookie",
115
+ duration: "2 Years",
116
+ purpose: ["Marketing"],
117
+ },
118
+ {
119
+ keyName: "SAPISID",
120
+ description: "Used by Youtube to link content to your Google account",
121
+ type: "Cookie",
122
+ duration: "2 Years",
123
+ purpose: ["Analytics"],
124
+ },
125
+ {
126
+ keyName: "APISID",
127
+ description: "Used by Youtube to gather information on played videos",
128
+ type: "Cookie",
129
+ duration: "1 Year",
130
+ purpose: ["Analytics"],
131
+ },
132
+ {
133
+ keyName: "wide",
134
+ description: "Used by Youtube to store user preferences",
135
+ type: "Cookie",
136
+ duration: "Session (as long as the browser application is open)",
137
+ purpose: ["Functional"],
138
+ },
139
+ {
140
+ keyName: "__cf_bm",
141
+ description: "Used by Vimeo to filter bots",
142
+ type: "Cookie",
143
+ duration: "1 Year",
144
+ purpose: ["Analytics"],
145
+ },
146
+ {
147
+ keyName: "_GRECAPTCHA",
148
+ description: "Used by Calendly to prevent spamming",
149
+ type: "Cookie",
150
+ duration: "6 months",
151
+ purpose: ["Functional"],
152
+ },
153
+ {
154
+ keyName: "_ga",
155
+ description: "Used by Calendly to track page views",
156
+ type: "Cookie",
157
+ duration: "1 Year",
158
+ purpose: ["Analytics"],
159
+ },
160
+ {
161
+ keyName: "_hp2_id.[user_id]",
162
+ description: "Used by Calendly to gather page interactions of users",
163
+ type: "Cookie",
164
+ duration: "1 Year",
165
+ purpose: ["Analytics"],
166
+ },
167
+ {
168
+ keyName: "_calendly_session",
169
+ description: "Used by Calendly to store user's preferences",
170
+ type: "Cookie",
171
+ duration: "15 days",
172
+ purpose: ["Functional"],
173
+ },
174
+ {
175
+ keyName: "__stripe_mid",
176
+ description: "Used by Calendly to prevent fraudulent transactions",
177
+ type: "Cookie",
178
+ duration: "1 Year",
179
+ purpose: ["Functional"],
180
+ },
181
+ {
182
+ keyName: "OptanonAlertBoxClosed",
183
+ description:
184
+ "Used by Calendly to store OneTrust cookie consent preferences",
185
+ type: "Cookie",
186
+ duration: "1 Year",
187
+ purpose: ["Functional"],
188
+ },
189
+ {
190
+ keyName: "OptanonConsent",
191
+ description:
192
+ "Used by Calendly to store OneTrust cookie consent preferences",
193
+ type: "Cookie",
194
+ duration: "2 Year",
195
+ purpose: ["Functional"],
196
+ },
197
+ {
198
+ keyName: "LaunchDarkly_[alphanumeric ID]_[alphanumeric ID]",
199
+ description:
200
+ "Used by LaunchDarkly to cache feature flag values for the chat widget. Scoped per bot (client_handle), not per end-user.",
201
+ type: "Web Storage",
202
+ duration: "Persistent",
203
+ purpose: ["Functional"],
204
+ },
205
+ {
206
+ keyName: "LaunchDarkly_[alphanumeric ID]_ContextIndex",
207
+ description:
208
+ "Used by LaunchDarkly to index evaluation contexts (bots) that have fetched feature flags for the chat widget.",
209
+ type: "Web Storage",
210
+ duration: "Persistent",
211
+ purpose: ["Functional"],
212
+ },
213
+ {
214
+ keyName: "LaunchDarkly_[alphanumeric ID]_[alphanumeric ID]_freshness",
215
+ description:
216
+ "Used by LaunchDarkly to record when the associated cached feature flag values were last refreshed. Paired with the flag cache entry.",
217
+ type: "Web Storage",
218
+ duration: "Persistent",
219
+ purpose: ["Functional"],
220
+ },
214
221
  ];