Skip to content

Commit e2eae48

Browse files
authored
🤖 Merge PR DefinitelyTyped#74665 [pendo-io-browser] Update Pendo implementation to match v2.314.0 source code by @pkmnct
1 parent d8eab7d commit e2eae48

File tree

3 files changed

+672
-10
lines changed

3 files changed

+672
-10
lines changed

‎types/pendo-io-browser/index.d.ts‎

Lines changed: 257 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,149 @@ declare namespace pendo {
1818
type IdentityCookieDomain = `.${string}`;
1919

2020
interface InitOptions extends Identity {
21+
// Core Configuration
2122
apiKey?: string | undefined;
23+
publicAppId?: string | undefined;
24+
additionalPublicAppIds?: string[] | undefined;
2225
excludeAllText?: boolean | undefined;
2326
excludeTitle?: boolean | undefined;
2427
disableCookies?: boolean;
2528
disablePersistence?: boolean | undefined;
29+
disablePendo?: boolean | undefined;
2630
guides?: {
31+
attachPoint?: string | (() => HTMLElement) | undefined;
2732
delay?: boolean | undefined;
2833
disabled?: boolean | undefined;
34+
ejectOnTimeout?: boolean | undefined;
35+
globalScripts?: any[] | undefined;
2936
timeout?: number | undefined;
3037
tooltip?: {
3138
arrowSize?: number | undefined;
3239
} | undefined;
3340
} | undefined;
3441
events?: EventCallbacks | undefined;
42+
43+
// URL and Location Configuration
44+
annotateUrl?: (
45+
url: string,
46+
) => string | string[] | {
47+
exclude?: string[];
48+
include?: string[] | Record<string, string | number>;
49+
fragment?: string;
50+
};
3551
sanitizeUrl?: (url: string) => string;
52+
queryStringWhitelist?: string[] | (() => string[]) | undefined;
53+
ignoreHashRouting?: boolean | undefined;
54+
location?: {
55+
pushState?: boolean | undefined;
56+
} | undefined;
57+
58+
// Hosting and Delivery
59+
assetHost?: string | undefined;
60+
contentHost?: string | undefined;
61+
dataHost?: string | undefined;
62+
selfHostedWebSDKUrl?: string | undefined;
63+
64+
// Frame and Cross-Origin Configuration
65+
allowCrossOriginFrames?: boolean | undefined;
66+
autoFrameInstall?: boolean | undefined;
67+
frameIdentitySync?: boolean | undefined;
68+
frameIdentityTopDownOnly?: boolean | undefined;
69+
forcedLeader?: boolean | undefined;
70+
preferBroadcastChannel?: boolean | undefined;
71+
enableCrossOriginIsolation?: boolean | undefined;
72+
73+
// Identity and Persistence
74+
forceAnonymous?: boolean | undefined;
75+
identityStorageSuffix?: string | undefined;
76+
crossAppGuideStorageSuffix?: string | undefined;
77+
localStorageOnly?: boolean | undefined;
78+
dropAnonymous?: boolean | undefined;
79+
80+
// Analytics Configuration
81+
allowedText?: string[] | undefined;
82+
analytics?: {
83+
excludeEvents?: string[] | undefined;
84+
localStorageUnload?: boolean | undefined;
85+
} | undefined;
86+
enableDebugEvents?: boolean | undefined;
87+
eventPropertyMatchParents?: boolean | undefined;
88+
eventPropertyConfigurations?: any[] | undefined;
89+
excludeNonGuideAnalytics?: boolean | undefined;
90+
interceptPreventDefault?: boolean | undefined;
91+
interceptStopPropagation?: boolean | undefined;
92+
syntheticClicks?: {
93+
elementRemoval?: boolean | undefined;
94+
targetChanged?: boolean | undefined;
95+
} | undefined;
96+
interceptElementRemoval?: boolean | undefined; // Deprecated: use syntheticClicks.elementRemoval
97+
98+
// Guide Configuration
99+
appAutoOrdering?: string[] | undefined;
100+
blockAgentMetadata?: boolean | undefined;
101+
cacheGuides?: boolean | undefined;
102+
cacheGuidesPersistent?: boolean | undefined;
103+
cacheGuidesTimeout?: number | undefined;
104+
captureConsoleLogs?: boolean | undefined;
105+
captureNetworkRequests?: boolean | undefined;
106+
disableDesigner?: boolean | undefined;
107+
disableDesignerKeyboardShortcut?: boolean | undefined;
108+
disableGlobalCSS?: boolean | undefined;
109+
disableGuidePseudoStyles?: boolean | undefined;
110+
disablePrefetch?: boolean | undefined;
111+
enableAllEmbeddedGuideEvents?: boolean | undefined;
112+
enableDesignerKeyboardShortcut?: boolean | undefined;
113+
enableFullUtmReferrer?: boolean | undefined;
114+
enableGuideTimeout?: boolean | undefined;
115+
enableSignedMetadata?: boolean | undefined;
116+
guideMarkdown?: boolean | undefined;
117+
guideSeenTimeoutLength?: number | undefined;
118+
guideValidation?: boolean | undefined;
119+
htmlAttributeBlacklist?: string[] | null | undefined;
120+
htmlAttributes?: RegExp | undefined;
121+
inlineStyleNonce?: string | undefined;
122+
leaderApplication?: string[] | undefined;
123+
preventCodeInjection?: boolean | undefined;
124+
preventCookieRefresh?: boolean | undefined;
125+
preventUnloadListener?: boolean | undefined;
126+
predictGuides?: boolean | undefined;
127+
initializeImmediately?: boolean | undefined;
128+
observeShadowRoots?: boolean | undefined;
129+
preferMutationObserver?: boolean | undefined;
130+
131+
// Feedback Configuration
132+
disableFeedback?: boolean | undefined;
133+
disableFeedbackAutoInit?: boolean | undefined;
134+
pendoFeedback?: boolean | undefined;
135+
136+
// Performance and Monitoring
137+
environmentName?: string | undefined;
138+
errorClickLogging?: boolean | undefined;
139+
extensionPersistLocalStorage?: boolean | undefined;
140+
formValidation?: boolean | undefined;
141+
isPendoFree?: boolean | undefined;
142+
pendoCore?: boolean | undefined;
143+
performanceMetricsEnabled?: boolean | undefined;
144+
performanceMetricsSampleRate?: number | undefined;
145+
recording?: { enabled?: boolean | undefined } | undefined;
146+
requestSegmentFlags?: boolean | undefined;
147+
requireHTTPS?: boolean | undefined;
148+
requireSignedMetadata?: boolean | undefined;
149+
resourceCaching?: boolean | undefined;
150+
sendEventsWithPostOnly?: boolean | undefined;
151+
siblingSelectors?: boolean | undefined;
152+
stagingServers?: (string | RegExp)[] | undefined;
153+
unminified?: boolean | undefined;
154+
vocPortal?: boolean | undefined;
36155
}
37156

38157
interface EventCallbacks {
39158
ready?(): void;
40159
guidesLoaded?(): void;
41160
guidesFailed?(): void;
161+
validateGlobalScript?(result: any): void;
162+
validateGuide?(signatureString: string, guide: Guide): void | Promise<void>;
163+
validateLauncher?(signatureString: string): void | Promise<void>;
42164
}
43165

44166
interface Pendo {
@@ -47,30 +169,49 @@ declare namespace pendo {
47169
identify(visitorId: string, accountId?: string): void;
48170
identify(identity: Identity): void;
49171
isReady(): boolean;
50-
flushNow(): Promise<any>;
172+
flushNow(options?: { hidden?: boolean; unload?: boolean }): Promise<any>;
51173
updateOptions(options: Identity): void;
52174
getVersion(): string;
53175
getVisitorId(): string;
176+
get_visitor_id(): string;
177+
set_visitor_id(newVisitorId: string): void;
54178
getAccountId(): string | null;
179+
get_account_id(): string | null;
180+
set_account_id(newAccountId: string): void;
55181
getCurrentUrl(): string;
56182
clearSession(): void;
57183
teardown(): void;
184+
isAnonymousVisitor(id?: string): boolean;
185+
generate_unique_id(prefix?: string): string;
58186

59187
// Guides and Guide Center
60188
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
61189
findGuideByName(name: string): Guide | void;
62190
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
63191
findGuideById(id: string): Guide | void;
192+
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
193+
findGuideBy(field: string, value: any): Guide | void;
194+
findModuleByName(name: string): any;
195+
findStepInGuide(guide: Guide, stepId: string): GuideStep | undefined;
64196
showGuideByName(name: string): void;
65-
showGuideById(id: string): void;
197+
showGuideById(id: string, reason?: string): void;
198+
isGuideShown(): boolean;
199+
getActiveGuides(): Guide[];
200+
getActiveGuide(): Guide | undefined;
201+
hideGuides(hideOptions?: { stayHidden?: boolean }): void;
66202
toggleLauncher(): void;
203+
showLauncher(): void;
204+
hideLauncher(): void;
67205
removeLauncher(): void;
68206

69207
// Troubleshooting
70208
setGuidesDisabled(state: boolean): void;
209+
areGuidesDisabled(): boolean;
71210
loadGuides(): void;
72211
startGuides(): void;
73212
stopGuides(): void;
213+
showPreview(): void;
214+
pageLoad(): void;
74215

75216
// Debugging
76217
enableDebugging(): void;
@@ -82,24 +223,59 @@ declare namespace pendo {
82223
// Events
83224
events: Events;
84225
track(trackType: string, metadata?: Metadata): void;
226+
trackAgent(trackType: string, metadata?: Metadata): void;
227+
isSendingEvents(): boolean;
228+
startSendingEvents(): void;
229+
stopSendingEvents(): void;
230+
getEventCache(): any[];
231+
flushEventCache(): void;
85232

86233
// Guide Events
87234
onGuideAdvanced(step?: GuideStep): void;
88235
onGuideAdvanced(steps: { steps: number }): void;
89236
onGuidePrevious(step?: GuideStep): void;
90237
onGuideDismissed(step?: GuideStep): void;
91238
onGuideDismissed(until: { until: "reload" }): void;
239+
onGuideSnoozed(evt: any, step?: GuideStep, snoozeDuration?: number): void;
92240

93241
// feedback
94242
feedback: Feedback;
95243

96244
// Properties
97245
additionalApiKeys: string[];
98246
apiKey: string;
247+
visitorId: string;
248+
accountId: string;
249+
guides: Guide[];
250+
designerEnabled: boolean;
251+
features: any;
252+
VERSION: string;
253+
ENV: string;
254+
255+
// URL and Location
256+
url: UrlManager;
257+
location: LocationManager;
99258

100-
// Other
101-
validateInstall(): void;
259+
// Utilities
260+
log(message: string, ...contexts: string[]): void;
261+
ajax: AjaxHelper;
262+
validateInstall(skipLogging?: boolean): void;
263+
validateEnvironment(skipLogging?: boolean): void;
102264
dom(input: any): HTMLElement; // TODO
265+
doesExist(arg: any): boolean;
266+
getMode(): string | undefined;
267+
getNormalizedUrl(): string;
268+
/** @deprecated Use pendo.sniffer or navigator.userAgent directly */
269+
getUA(): string;
270+
getURL(): string;
271+
getSerializedMetadata(): Metadata;
272+
isURLValid(url: string): boolean;
273+
274+
// Advanced
275+
BuildingBlocks?: any; // Internal API
276+
buffers?: any; // Internal API
277+
frames?: any; // Internal API
278+
sniffer?: BrowserSniffer;
103279
}
104280

105281
interface FeedbackOptions {
@@ -110,16 +286,33 @@ declare namespace pendo {
110286
}
111287

112288
interface Debugging {
113-
getEventCache(): any[]; // TODO
289+
getEventCache(): any[];
114290
getAllGuides(): Guide[];
115291
getAutoGuides(): { auto: Guide[]; override: Guide[] };
116292
getBadgeGuides(): Guide[];
117-
getLauncherGuides(): Guide[];
293+
getLauncherGuides(guideList?: Guide[]): Guide[];
294+
getEventHistory(): any[];
295+
getMetadata(): any;
296+
areGuidesDelayed(): boolean;
297+
isLeader(): boolean;
298+
getState(): any;
118299
}
119300

120-
type Events = {
121-
[K in keyof EventCallbacks]-?: (callback: EventCallbacks[K]) => Events;
122-
};
301+
type Events =
302+
& {
303+
[K in keyof EventCallbacks]-?: (callback: EventCallbacks[K]) => Events;
304+
}
305+
& {
306+
on(eventName: string, callback: (...args: any[]) => void): void;
307+
off(eventName: string, callback?: (...args: any[]) => void): void;
308+
once(eventName: string, callback: (...args: any[]) => void): void;
309+
one(eventName: string, callback: (...args: any[]) => void): void;
310+
trigger(eventName: string, ...args: any[]): void;
311+
addEventListener(eventName: string, callback: (...args: any[]) => void): void;
312+
removeEventListener(eventName: string, callback?: (...args: any[]) => void): void;
313+
onClickCaptured(callback: (event: any) => void): Events;
314+
deliverablesLoaded(callback: () => void): Events;
315+
};
123316

124317
interface Guide {
125318
createdByUser: User;
@@ -180,6 +373,61 @@ declare namespace pendo {
180373
lastUpdatedAt: number;
181374
resetAt: number;
182375
}
376+
377+
interface UrlManager {
378+
get(url?: string): string;
379+
watch(callback: (url: string) => void): void;
380+
clear(): void;
381+
getWindowLocation(): Location;
382+
isElectron(): boolean;
383+
electronAppName(): string | undefined;
384+
electronUserDirectory(): string | undefined;
385+
electronUserHomeDirectory(): string | undefined;
386+
electronResourcesPath(): string | undefined;
387+
externalizeURL(
388+
href: string,
389+
qs?: string | Record<string, string>,
390+
xhrWhitelist?: string[] | (() => string[]),
391+
): string;
392+
startPoller(): void;
393+
}
394+
395+
interface LocationManager {
396+
(cmd?: string): any;
397+
getHref(): string;
398+
clearTransforms(): void;
399+
addTransforms(transforms: any): void;
400+
setUrl(strOrFn: string | (() => string)): void;
401+
useBrowserUrl(): void;
402+
}
403+
404+
interface AjaxHelper {
405+
(config: any): any;
406+
get(url: string, headers?: any): Promise<any>;
407+
post(url: string, data?: any, headers?: any): Promise<any>;
408+
postJSON(url: string, data?: any, headers?: any): Promise<any>;
409+
urlFor(base: string, params?: string[] | Record<string, string | number>, fragment?: string): string;
410+
supported(): boolean;
411+
}
412+
413+
interface BrowserSniffer {
414+
MutationObserver: boolean;
415+
addEventListener: boolean;
416+
android: number;
417+
animations: boolean;
418+
msie: number;
419+
msieDocumentMode: number | undefined;
420+
safari: boolean;
421+
sri: boolean;
422+
transitions: boolean;
423+
vendorPrefix: string;
424+
isChromeExtension: boolean | undefined;
425+
hasEvent(event: string): boolean;
426+
isMinimumIEVersion(minVersion: number): boolean;
427+
isMobileUserAgent(key?: string): boolean;
428+
supportsHashChange(): boolean;
429+
supportsHistoryApi(key?: string): boolean;
430+
}
183431
}
184432

185433
declare const pendo: pendo.Pendo;

‎types/pendo-io-browser/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "@types/pendo-io-browser",
4-
"version": "2.19.9999",
4+
"version": "2.314.9999",
55
"nonNpm": true,
66
"nonNpmDescription": "Pendo.io Agent",
77
"projects": [

0 commit comments

Comments
 (0)