@sprig-technologies/sprig-browser 2.21.4 → 2.21.5

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",
@@ -400,81 +471,106 @@ interface RecordedTaskResponseType {
400
471
  value: RecordedTaskResponseValueType;
401
472
  }
402
473
 
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: {
474
+ declare type SprigEventMap = {
475
+ [InternalEventName.CurrentQuestion]: [
476
+ {
477
+ [InternalEventData.QuestionId]: number;
478
+ [InternalEventData.Props]: unknown;
479
+ }
480
+ ];
481
+ [InternalEventName.RecordedTaskPermissionScreen]: [];
482
+ [InternalEventName.RecordedTaskStart]: [];
483
+ [InternalEventName.SurveyComplete]: [];
484
+ [InternalEventName.VerifyViewVersion]: [
485
+ {
486
+ [InternalEventData.ViewVersion]: string;
487
+ }
488
+ ];
489
+ [SprigEvent.CloseSurveyOnOverlayClick]: [];
490
+ [SprigEvent.SDKReady]: [];
491
+ [SprigEvent.SurveyAppeared]: [];
492
+ [SprigEvent.SurveyDimensions]: [
493
+ {
494
+ contentFrameHeight: number;
495
+ contentFrameWidth: number;
496
+ name: string;
497
+ }
498
+ ];
499
+ [SprigEvent.SurveyClosed]: [
500
+ {
501
+ initiator?: string;
502
+ name: string;
503
+ }
504
+ ];
505
+ [SprigEvent.SurveyFadingOut]: [];
506
+ [SprigEvent.SurveyHeight]: [
507
+ {
508
+ name: string;
509
+ contentFrameHeight: number;
510
+ }
511
+ ];
512
+ [SprigEvent.SurveyLifeCycle]: [{
432
513
  state: string;
433
- }) => void;
434
- [SprigEvent.SurveyPresented]: (data: {
514
+ }];
515
+ [SprigEvent.SurveyPresented]: [{
435
516
  name: string;
436
- }) => void;
437
- [SprigEvent.SurveyWillClose]: (data: {
438
- initiator: DismissReason;
439
- name?: string;
440
- }) => void;
441
- [SprigEvent.SurveyWillPresent]: (data: {
442
- name: string;
443
- "survey.id": number;
444
- }) => void;
445
- [SprigEvent.VisitorIDUpdated]: (data: {
517
+ }];
518
+ [SprigEvent.SurveyWillClose]: [
519
+ {
520
+ initiator: DismissReason;
521
+ name?: string;
522
+ }
523
+ ];
524
+ [SprigEvent.SurveyWillPresent]: [
525
+ {
526
+ name: string;
527
+ "survey.id": number;
528
+ }
529
+ ];
530
+ [SprigEvent.VisitorIDUpdated]: [{
446
531
  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>;
532
+ }];
533
+ [SprigRecordingEvent.AvPermission]: [
534
+ {
535
+ [SprigRecordingEventData.StreamCanceledCallback]: () => void;
536
+ [SprigRecordingEventData.StreamReadyCallback]: (avStream: MediaStream | null, captureStream?: MediaStream | null) => void;
537
+ [SprigRecordingEventData.PermissionDescriptors]: AvPermission[];
538
+ }
539
+ ];
540
+ [SprigRecordingEvent.BeginRecording]: [
541
+ {
542
+ [SprigRecordingEventData.RecordingMediaTypes]: MediaType[];
543
+ [SprigRecordingEventData.StartRecordingCallback]: (mediaRecordingUids: UUID[]) => void;
544
+ }
545
+ ];
546
+ [SprigRecordingEvent.FinishTask]: [
547
+ {
548
+ [SprigRecordingEventData.BeginCallback]: (mediaRecordingUid: UUID) => void;
549
+ [SprigRecordingEventData.CurrentIndex]: number;
550
+ [SprigRecordingEventData.PassthroughData]: PassthroughData;
551
+ [SprigRecordingEventData.ProgressCallback]: (mediaRecordingUid: UUID, data: {
552
+ detail: number;
553
+ }) => void;
554
+ [SprigRecordingEventData.TaskCompleteCallback]: (taskDurationMillisecond: number) => void;
555
+ [SprigRecordingEventData.TaskResponse]: RecordedTaskResponseType;
556
+ [SprigRecordingEventData.UploadCallback]: (mediaRecordingUid: UUID | null, successOrError: true | unknown) => void;
557
+ }
558
+ ];
559
+ [SprigRecordingEvent.PermissionStatus]: [
560
+ {
561
+ [SprigRecordingEventData.PermissionStatusCallback]: (avStream: MediaStream | undefined, hasVideoPermission: boolean, hasScreenPermission: boolean) => void;
562
+ }
563
+ ];
564
+ [SprigRecordingEvent.ScreenPermission]: [
565
+ {
566
+ [SprigRecordingEventData.StreamCanceledCallback]: () => void;
567
+ [SprigRecordingEventData.StreamReadyCallback]: (avStream: MediaStream | null, captureStream: MediaStream | null) => void;
568
+ }
569
+ ];
570
+ [SprigRecordingEvent.StartTask]: [];
571
+ };
572
+ declare const eventEmitter: Emitter<SprigEventMap>;
573
+ declare type SprigEventEmitter = typeof eventEmitter;
478
574
 
479
575
  declare type MatchType = "exactly" | "legacy";
480
576
  interface InteractiveEvent {
@@ -741,12 +837,12 @@ declare namespace sprigConfig {
741
837
  addListener: (event: SprigEvent, listener: SprigListener) => Promise<void>;
742
838
  addSurveyListener: (listener: SprigListener) => Promise<void>;
743
839
  applyStyles: (styleString: string) => void;
840
+ dismissActiveSurvey: (reason?: DismissReason) => void;
744
841
  displaySurvey: (surveyId: number) => Promise<{
745
842
  success: boolean;
746
843
  message?: string;
747
844
  surveyState: SurveyState;
748
845
  }>;
749
- dismissActiveSurvey: (reason?: DismissReason) => void;
750
846
  identifyAndSetAttributes: (payload: {
751
847
  anonymousId?: string;
752
848
  attributes?: SprigAttributes;
@@ -755,10 +851,10 @@ declare namespace sprigConfig {
755
851
  identifyAndTrack: (payload: TrackPayload) => IdentifyResult;
756
852
  integrateOptimizely: (strData: string) => void;
757
853
  logoutUser: () => void;
758
- mute: () => unknown;
759
- removeAttributes: (attributes: SprigAttributes) => IdentifyResult;
854
+ mute: () => void;
760
855
  previewSurvey: (surveyTemplateId: UUID) => void;
761
856
  removeAllListeners: () => Promise<void>;
857
+ removeAttributes: (attributes: SprigAttributes) => IdentifyResult;
762
858
  removeListener: (
763
859
  event: SprigEvent,
764
860
  listener: SprigListener
@@ -788,11 +884,18 @@ declare namespace sprigConfig {
788
884
  properties?: TrackPayload["properties"],
789
885
  metadata?: SprigMetadata
790
886
  ) => IdentifyResult;
791
- unmute: (surveyId: number) => void;
887
+ unmute: () => void;
792
888
  }
793
889
 
890
+ type SprigCommand = keyof SprigAPIActions;
891
+ type SprigCommands = <C extends SprigCommand>(
892
+ command: C,
893
+ ...params: Parameters<SprigAPIActions[C]>
894
+ ) => ReturnType<SprigAPIActions[C]>;
895
+
794
896
  type WindowSprig = Config &
795
- SprigAPIActions & {
897
+ SprigAPIActions &
898
+ SprigCommands & {
796
899
  _API_URL: string;
797
900
  _config: Config;
798
901
  _gtm: unknown; // TODO: determine if boolean?
@@ -823,60 +926,17 @@ declare namespace sprigConfig {
823
926
  height: number;
824
927
  width: number;
825
928
  };
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);
929
+ };
873
930
  }
874
931
 
875
932
  declare global {
876
933
  interface Window {
877
934
  __cfg: Config;
878
935
  attachEvent?: typeof window.addEventListener;
879
- Intercom: Intercom_.IntercomStatic & { ul_wasVisible?: boolean };
936
+ Intercom: { ul_wasVisible?: boolean } & ((
937
+ method: string,
938
+ data: unknown
939
+ ) => void);
880
940
  optimizely?: optimizely.Optimizely;
881
941
  previewMode?: unknown;
882
942
  UpChunk: upchunk.UpChunkModule;
@@ -887,7 +947,7 @@ declare global {
887
947
 
888
948
  type WindowSprig = sprigConfig.WindowSprig;
889
949
  type SprigAttributes = Record<string, boolean | number | string>;
890
- type SprigListener = (data: unknown) => void;
950
+ type SprigListener = Listener<unknown[]>;
891
951
  type SprigMetadata = Record<string, unknown>;
892
952
  type SprigProperties = Record<string, unknown>;
893
953
  type SprigAPIActions = sprigConfig.SprigAPIActions;
@@ -928,7 +988,6 @@ declare class SprigAPI {
928
988
  };
929
989
  /**
930
990
  * Triggers displaying specified survey. Does submit answers!
931
- * @returns
932
991
  */
933
992
  displaySurvey(surveyId: number): void;
934
993
  /**
@@ -966,11 +1025,11 @@ declare class SprigAPI {
966
1025
  /**
967
1026
  * Add a listener for an event defined in ulEvents
968
1027
  */
969
- addListener(event: string, listener: SprigListener): void;
1028
+ addListener(event: SprigEvent, listener: SprigListener): void;
970
1029
  /**
971
1030
  * Remove a listener for an event defined in ulEvents
972
1031
  */
973
- removeListener(event: string, listener: SprigListener): void;
1032
+ removeListener(event: SprigEvent, listener: SprigListener): void;
974
1033
  /**
975
1034
  * Remove all listeners set on Sprig
976
1035
  */
@@ -1046,4 +1105,4 @@ declare const _default: {
1046
1105
  configure: (config: NpmConfig) => sprigConfig.WindowSprig;
1047
1106
  };
1048
1107
 
1049
- export { DismissReason, SprigAPI, WindowSprig$1 as WindowSprig, _default as default, sprig };
1108
+ export { DismissReason, SprigAPI, SprigEvent, WindowSprig$1 as WindowSprig, _default as default, sprig };