@sprig-technologies/sprig-browser 2.21.4 → 2.21.6

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/dist/index.d.ts CHANGED
@@ -1,4 +1,75 @@
1
- import { StrictEventEmitter } from 'strict-event-emitter';
1
+ declare type EventMap = {
2
+ [eventName: string]: Array<unknown>;
3
+ };
4
+ declare type InternalEventNames = 'newListener' | 'removeListener';
5
+ declare type InternalListener<Events extends EventMap> = Listener<[
6
+ eventName: keyof Events,
7
+ listener: Listener<Array<unknown>>
8
+ ]>;
9
+ declare type Listener<Data extends Array<unknown>> = (...data: Data) => void;
10
+ /**
11
+ * Node.js-compatible implementation of `EventEmitter`.
12
+ *
13
+ * @example
14
+ * const emitter = new Emitter<{ hello: [string] }>()
15
+ * emitter.on('hello', (name) => console.log(name))
16
+ * emitter.emit('hello', 'John')
17
+ */
18
+ declare class Emitter<Events extends EventMap> {
19
+ private events;
20
+ private maxListeners;
21
+ private hasWarnedAboutPotentialMemoryLeak;
22
+ static defaultMaxListeners: number;
23
+ static listenerCount<Events extends EventMap>(emitter: Emitter<EventMap>, eventName: keyof Events): number;
24
+ constructor();
25
+ private _emitInternalEvent;
26
+ private _getListeners;
27
+ private _removeListener;
28
+ private _wrapOnceListener;
29
+ setMaxListeners(maxListeners: number): this;
30
+ /**
31
+ * Returns the current max listener value for the `Emitter` which is
32
+ * either set by `emitter.setMaxListeners(n)` or defaults to
33
+ * `Emitter.defaultMaxListeners`.
34
+ */
35
+ getMaxListeners(): number;
36
+ /**
37
+ * Returns an array listing the events for which the emitter has registered listeners.
38
+ * The values in the array will be strings or Symbols.
39
+ */
40
+ eventNames(): Array<keyof Events>;
41
+ /**
42
+ * Synchronously calls each of the listeners registered for the event named `eventName`,
43
+ * in the order they were registered, passing the supplied arguments to each.
44
+ * Returns `true` if the event has listeners, `false` otherwise.
45
+ *
46
+ * @example
47
+ * const emitter = new Emitter<{ hello: [string] }>()
48
+ * emitter.emit('hello', 'John')
49
+ */
50
+ emit<EventName extends keyof Events>(eventName: EventName, ...data: Events[EventName]): boolean;
51
+ addListener(eventName: InternalEventNames, listener: InternalListener<Events>): this;
52
+ addListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
53
+ on(eventName: InternalEventNames, listener: InternalListener<Events>): this;
54
+ on<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
55
+ once(eventName: InternalEventNames, listener: InternalListener<Events>): this;
56
+ once<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
57
+ prependListener(eventName: InternalEventNames, listener: InternalListener<Events>): this;
58
+ prependListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
59
+ prependOnceListener(eventName: InternalEventNames, listener: InternalListener<Events>): this;
60
+ prependOnceListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
61
+ removeListener(eventName: InternalEventNames, listener: InternalListener<Events>): this;
62
+ removeListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
63
+ off(eventName: InternalEventNames, listener: InternalListener<Events>): this;
64
+ off<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this;
65
+ removeAllListeners(eventName?: InternalEventNames): this;
66
+ removeAllListeners<EventName extends keyof Events>(eventName?: EventName): this;
67
+ listeners(eventName: InternalEventNames): Array<Listener<any>>;
68
+ listeners<EventName extends keyof Events>(eventName: EventName): Array<Listener<Events[EventName]>>;
69
+ listenerCount(eventName: InternalEventNames): number;
70
+ listenerCount<EventName extends keyof Events>(eventName: EventName): number;
71
+ rawListeners<EventName extends keyof Events>(eventName: EventName): Array<Listener<Events[EventName]>>;
72
+ }
2
73
 
3
74
  declare enum DismissReason {
4
75
  Closed = "close.click",
@@ -82,6 +153,7 @@ declare const enum TaskStatus {
82
153
  Completed = "completed"
83
154
  }
84
155
  declare const enum SprigRecordingEventData {
156
+ ScreenPermissionRequested = "screen.permission.requested",
85
157
  PermissionDescriptors = "permission.descriptors",
86
158
  PermissionStatusCallback = "permission.status.callback",
87
159
  StreamReadyCallback = "stream.ready.callback",
@@ -232,6 +304,7 @@ interface ScreenTaskPage extends BaseTaskPage {
232
304
  }
233
305
  interface StartTaskPage extends BaseTaskPage {
234
306
  captionText?: string;
307
+ skipButtonText: string;
235
308
  taskDetail: string;
236
309
  type: RecordedTaskPageType.StartTask;
237
310
  }
@@ -400,81 +473,107 @@ interface RecordedTaskResponseType {
400
473
  value: RecordedTaskResponseValueType;
401
474
  }
402
475
 
403
- interface SprigEventMap {
404
- [InternalEventName.CurrentQuestion]: (data: {
405
- [InternalEventData.QuestionId]: number;
406
- [InternalEventData.Props]: unknown;
407
- }) => void;
408
- [InternalEventName.RecordedTaskPermissionScreen]: () => void;
409
- [InternalEventName.RecordedTaskStart]: () => void;
410
- [InternalEventName.SurveyComplete]: () => void;
411
- [InternalEventName.VerifyViewVersion]: (data: {
412
- [InternalEventData.ViewVersion]: string;
413
- }) => void;
414
- [SprigEvent.CloseSurveyOnOverlayClick]: () => void;
415
- [SprigEvent.SDKReady]: () => void;
416
- [SprigEvent.SurveyAppeared]: () => void;
417
- [SprigEvent.SurveyDimensions]: (data: {
418
- contentFrameHeight: number;
419
- contentFrameWidth: number;
420
- name: string;
421
- }) => void;
422
- [SprigEvent.SurveyClosed]: (data: {
423
- initiator?: unknown;
424
- name: string;
425
- }) => void;
426
- [SprigEvent.SurveyFadingOut]: () => void;
427
- [SprigEvent.SurveyHeight]: (data: {
428
- name: string;
429
- contentFrameHeight: number;
430
- }) => void;
431
- [SprigEvent.SurveyLifeCycle]: (data: {
476
+ declare type SprigEventMap = {
477
+ [InternalEventName.CurrentQuestion]: [
478
+ {
479
+ [InternalEventData.QuestionId]: number;
480
+ [InternalEventData.Props]: unknown;
481
+ }
482
+ ];
483
+ [InternalEventName.RecordedTaskPermissionScreen]: [];
484
+ [InternalEventName.RecordedTaskStart]: [];
485
+ [InternalEventName.SurveyComplete]: [];
486
+ [InternalEventName.VerifyViewVersion]: [
487
+ {
488
+ [InternalEventData.ViewVersion]: string;
489
+ }
490
+ ];
491
+ [SprigEvent.CloseSurveyOnOverlayClick]: [];
492
+ [SprigEvent.SDKReady]: [];
493
+ [SprigEvent.SurveyAppeared]: [];
494
+ [SprigEvent.SurveyDimensions]: [
495
+ {
496
+ contentFrameHeight: number;
497
+ contentFrameWidth: number;
498
+ name: string;
499
+ }
500
+ ];
501
+ [SprigEvent.SurveyClosed]: [
502
+ {
503
+ initiator?: string;
504
+ name: string;
505
+ }
506
+ ];
507
+ [SprigEvent.SurveyFadingOut]: [];
508
+ [SprigEvent.SurveyHeight]: [
509
+ {
510
+ name: string;
511
+ contentFrameHeight: number;
512
+ }
513
+ ];
514
+ [SprigEvent.SurveyLifeCycle]: [{
432
515
  state: string;
433
- }) => void;
434
- [SprigEvent.SurveyPresented]: (data: {
435
- name: string;
436
- }) => void;
437
- [SprigEvent.SurveyWillClose]: (data: {
438
- initiator: DismissReason;
439
- name?: string;
440
- }) => void;
441
- [SprigEvent.SurveyWillPresent]: (data: {
516
+ }];
517
+ [SprigEvent.SurveyPresented]: [{
442
518
  name: string;
443
- "survey.id": number;
444
- }) => void;
445
- [SprigEvent.VisitorIDUpdated]: (data: {
519
+ }];
520
+ [SprigEvent.SurveyWillClose]: [
521
+ {
522
+ initiator: DismissReason;
523
+ name?: string;
524
+ }
525
+ ];
526
+ [SprigEvent.SurveyWillPresent]: [
527
+ {
528
+ name: string;
529
+ "survey.id": number;
530
+ }
531
+ ];
532
+ [SprigEvent.VisitorIDUpdated]: [{
446
533
  visitorId: string | null;
447
- }) => void;
448
- [SprigRecordingEvent.AvPermission]: (data: {
449
- [SprigRecordingEventData.StreamCanceledCallback]: () => void;
450
- [SprigRecordingEventData.StreamReadyCallback]: (avStream: MediaStream | null, captureStream?: MediaStream | null) => void;
451
- [SprigRecordingEventData.PermissionDescriptors]: AvPermission[];
452
- }) => void;
453
- [SprigRecordingEvent.BeginRecording]: (data: {
454
- [SprigRecordingEventData.RecordingMediaTypes]: MediaType[];
455
- [SprigRecordingEventData.StartRecordingCallback]: (mediaRecordingUids: UUID[]) => void;
456
- }) => void;
457
- [SprigRecordingEvent.FinishTask]: (data: {
458
- [SprigRecordingEventData.BeginCallback]: (mediaRecordingUid: UUID) => void;
459
- [SprigRecordingEventData.CurrentIndex]: number;
460
- [SprigRecordingEventData.PassthroughData]: PassthroughData;
461
- [SprigRecordingEventData.ProgressCallback]: (mediaRecordingUid: UUID, data: {
462
- detail: number;
463
- }) => void;
464
- [SprigRecordingEventData.TaskCompleteCallback]: (taskDurationMillisecond: number) => void;
465
- [SprigRecordingEventData.TaskResponse]: RecordedTaskResponseType;
466
- [SprigRecordingEventData.UploadCallback]: (mediaRecordingUid: UUID | null, successOrError: true | unknown) => void;
467
- }) => void;
468
- [SprigRecordingEvent.PermissionStatus]: (data: {
469
- [SprigRecordingEventData.PermissionStatusCallback]: (avStream: MediaStream | undefined, hasVideoPermission: boolean, hasScreenPermission: boolean) => void;
470
- }) => void;
471
- [SprigRecordingEvent.ScreenPermission]: (data: {
472
- [SprigRecordingEventData.StreamCanceledCallback]: () => void;
473
- [SprigRecordingEventData.StreamReadyCallback]: (avStream: MediaStream | null, captureStream: MediaStream | null) => void;
474
- }) => void;
475
- [SprigRecordingEvent.StartTask]: () => void;
476
- }
477
- declare type SprigEventEmitter = StrictEventEmitter<SprigEventMap>;
534
+ }];
535
+ [SprigRecordingEvent.AvPermission]: [
536
+ {
537
+ [SprigRecordingEventData.StreamCanceledCallback]: () => void;
538
+ [SprigRecordingEventData.StreamReadyCallback]: (avStream: MediaStream | null, captureStream?: MediaStream | null) => void;
539
+ [SprigRecordingEventData.PermissionDescriptors]: AvPermission[];
540
+ }
541
+ ];
542
+ [SprigRecordingEvent.BeginRecording]: [
543
+ {
544
+ [SprigRecordingEventData.RecordingMediaTypes]: MediaType[];
545
+ [SprigRecordingEventData.StartRecordingCallback]: (mediaRecordingUids: UUID[]) => void;
546
+ }
547
+ ];
548
+ [SprigRecordingEvent.FinishTask]: [
549
+ {
550
+ [SprigRecordingEventData.BeginCallback]: (mediaRecordingUid: UUID) => void;
551
+ [SprigRecordingEventData.CurrentIndex]: number;
552
+ [SprigRecordingEventData.PassthroughData]: PassthroughData;
553
+ [SprigRecordingEventData.ProgressCallback]: (mediaRecordingUid: UUID, data: {
554
+ detail: number;
555
+ }) => void;
556
+ [SprigRecordingEventData.TaskCompleteCallback]: (taskDurationMillisecond: number) => void;
557
+ [SprigRecordingEventData.TaskResponse]: RecordedTaskResponseType;
558
+ [SprigRecordingEventData.UploadCallback]: (mediaRecordingUid: UUID | null, successOrError: true | unknown) => void;
559
+ }
560
+ ];
561
+ [SprigRecordingEvent.PermissionStatus]: [
562
+ {
563
+ [SprigRecordingEventData.PermissionStatusCallback]: (avStream: MediaStream | undefined, hasVideoPermission: boolean, hasScreenPermission: boolean) => void;
564
+ }
565
+ ];
566
+ [SprigRecordingEvent.ScreenPermission]: [
567
+ {
568
+ [SprigRecordingEventData.ScreenPermissionRequested]?: (data: boolean) => void;
569
+ [SprigRecordingEventData.StreamCanceledCallback]: () => void;
570
+ [SprigRecordingEventData.StreamReadyCallback]: (avStream: MediaStream | null, captureStream: MediaStream | null) => void;
571
+ }
572
+ ];
573
+ [SprigRecordingEvent.StartTask]: [];
574
+ };
575
+ declare const eventEmitter: Emitter<SprigEventMap>;
576
+ declare type SprigEventEmitter = typeof eventEmitter;
478
577
 
479
578
  declare type MatchType = "exactly" | "legacy";
480
579
  interface InteractiveEvent {
@@ -733,6 +832,7 @@ declare namespace sprigConfig {
733
832
  eventName?: string;
734
833
  properties?: SprigProperties;
735
834
  userId?: string;
835
+ showSurveyCallback?: (surveyId: number) => Promise<boolean>;
736
836
  }
737
837
 
738
838
  interface SprigAPIActions {
@@ -741,12 +841,12 @@ declare namespace sprigConfig {
741
841
  addListener: (event: SprigEvent, listener: SprigListener) => Promise<void>;
742
842
  addSurveyListener: (listener: SprigListener) => Promise<void>;
743
843
  applyStyles: (styleString: string) => void;
844
+ dismissActiveSurvey: (reason?: DismissReason) => void;
744
845
  displaySurvey: (surveyId: number) => Promise<{
745
846
  success: boolean;
746
847
  message?: string;
747
848
  surveyState: SurveyState;
748
849
  }>;
749
- dismissActiveSurvey: (reason?: DismissReason) => void;
750
850
  identifyAndSetAttributes: (payload: {
751
851
  anonymousId?: string;
752
852
  attributes?: SprigAttributes;
@@ -755,10 +855,10 @@ declare namespace sprigConfig {
755
855
  identifyAndTrack: (payload: TrackPayload) => IdentifyResult;
756
856
  integrateOptimizely: (strData: string) => void;
757
857
  logoutUser: () => void;
758
- mute: () => unknown;
759
- removeAttributes: (attributes: SprigAttributes) => IdentifyResult;
858
+ mute: () => void;
760
859
  previewSurvey: (surveyTemplateId: UUID) => void;
761
860
  removeAllListeners: () => Promise<void>;
861
+ removeAttributes: (attributes: SprigAttributes) => IdentifyResult;
762
862
  removeListener: (
763
863
  event: SprigEvent,
764
864
  listener: SprigListener
@@ -786,13 +886,21 @@ declare namespace sprigConfig {
786
886
  track: (
787
887
  eventName: string,
788
888
  properties?: TrackPayload["properties"],
789
- metadata?: SprigMetadata
889
+ metadata?: SprigMetadata,
890
+ showSurveyCallback?: (surveyId: number) => Promise<boolean>
790
891
  ) => IdentifyResult;
791
- unmute: (surveyId: number) => void;
892
+ unmute: () => void;
792
893
  }
793
894
 
895
+ type SprigCommand = keyof SprigAPIActions;
896
+ type SprigCommands = <C extends SprigCommand>(
897
+ command: C,
898
+ ...params: Parameters<SprigAPIActions[C]>
899
+ ) => ReturnType<SprigAPIActions[C]>;
900
+
794
901
  type WindowSprig = Config &
795
- SprigAPIActions & {
902
+ SprigAPIActions &
903
+ SprigCommands & {
796
904
  _API_URL: string;
797
905
  _config: Config;
798
906
  _gtm: unknown; // TODO: determine if boolean?
@@ -823,60 +931,17 @@ declare namespace sprigConfig {
823
931
  height: number;
824
932
  width: number;
825
933
  };
826
- } & ((name: "_previewSurvey", surveyTemplateId: string) => void) &
827
- ((name: "_reviewSurvey", surveyId: number) => void) &
828
- ((name: "addListener", event: string, listener: SprigListener) => void) &
829
- ((name: "applyStyles", styles: string) => void) &
830
- ((name: "dismissActiveSurvey", reason?: DismissReason) => void) &
831
- ((name: "displaySurvey", surveyId: number) => void) &
832
- ((
833
- name: "identifyAndSetAttributes",
834
- payload: {
835
- anonymousID?: string;
836
- attributes: SprigAttributes;
837
- userID?: string;
838
- }
839
- ) => void) &
840
- ((
841
- name: "identifyAndTrack",
842
- payload: {
843
- anonymousId?: string;
844
- eventName: string;
845
- metadata?: SprigMetadata;
846
- userId?: string;
847
- }
848
- ) => void) &
849
- ((name: "logoutUser") => void) &
850
- ((name: "mute") => void) &
851
- ((name: "previewSurvey", surveyTemplateId: string) => void) &
852
- ((name: "removeAllListeners") => void) &
853
- ((name: "removeAttributes", attributes: SprigAttributes) => void) &
854
- ((name: "removeListener", event: string, listener: SprigListener) => void) &
855
- ((name: "reviewSurvey", surveyId: number) => void) &
856
- ((name: "setAttribute", attribute: string, value: string) => void) &
857
- ((name: "setAttributes", attributes: SprigAttributes) => void) &
858
- ((name: "setPartnerAnonymousId", partnerAnonymousId: string) => void) &
859
- ((name: "setUserId", userId: string) => void) &
860
- ((
861
- name: "setWindowDimensions",
862
- width: number | string,
863
- height: number | string
864
- ) => void) &
865
- ((name: "teardown") => void) &
866
- ((
867
- name: "track",
868
- eventName: string,
869
- properties?: SprigProperties,
870
- metadata?: SprigMetadata
871
- ) => void) &
872
- ((name: "unmute") => void);
934
+ };
873
935
  }
874
936
 
875
937
  declare global {
876
938
  interface Window {
877
939
  __cfg: Config;
878
940
  attachEvent?: typeof window.addEventListener;
879
- Intercom: Intercom_.IntercomStatic & { ul_wasVisible?: boolean };
941
+ Intercom: { ul_wasVisible?: boolean } & ((
942
+ method: string,
943
+ data: unknown
944
+ ) => void);
880
945
  optimizely?: optimizely.Optimizely;
881
946
  previewMode?: unknown;
882
947
  UpChunk: upchunk.UpChunkModule;
@@ -887,7 +952,7 @@ declare global {
887
952
 
888
953
  type WindowSprig = sprigConfig.WindowSprig;
889
954
  type SprigAttributes = Record<string, boolean | number | string>;
890
- type SprigListener = (data: unknown) => void;
955
+ type SprigListener = Listener<unknown[]>;
891
956
  type SprigMetadata = Record<string, unknown>;
892
957
  type SprigProperties = Record<string, unknown>;
893
958
  type SprigAPIActions = sprigConfig.SprigAPIActions;
@@ -928,7 +993,6 @@ declare class SprigAPI {
928
993
  };
929
994
  /**
930
995
  * Triggers displaying specified survey. Does submit answers!
931
- * @returns
932
996
  */
933
997
  displaySurvey(surveyId: number): void;
934
998
  /**
@@ -966,11 +1030,11 @@ declare class SprigAPI {
966
1030
  /**
967
1031
  * Add a listener for an event defined in ulEvents
968
1032
  */
969
- addListener(event: string, listener: SprigListener): void;
1033
+ addListener(event: SprigEvent, listener: SprigListener): void;
970
1034
  /**
971
1035
  * Remove a listener for an event defined in ulEvents
972
1036
  */
973
- removeListener(event: string, listener: SprigListener): void;
1037
+ removeListener(event: SprigEvent, listener: SprigListener): void;
974
1038
  /**
975
1039
  * Remove all listeners set on Sprig
976
1040
  */
@@ -1046,4 +1110,4 @@ declare const _default: {
1046
1110
  configure: (config: NpmConfig) => sprigConfig.WindowSprig;
1047
1111
  };
1048
1112
 
1049
- export { DismissReason, SprigAPI, WindowSprig$1 as WindowSprig, _default as default, sprig };
1113
+ export { DismissReason, SprigAPI, SprigEvent, WindowSprig$1 as WindowSprig, _default as default, sprig };