From cdeb075643dbd94f47097204f2f049c45a6f7665 Mon Sep 17 00:00:00 2001 From: frankzhaopeng Date: Wed, 22 Feb 2023 15:40:04 +0800 Subject: [PATCH 1/3] feat: flush events before page unload --- src/FeatureProbe.ts | 4 ++++ src/flushEvents.ts | 20 ++++++++++++++++++++ src/platform.ts | 1 + 3 files changed, 25 insertions(+) create mode 100644 src/flushEvents.ts diff --git a/src/FeatureProbe.ts b/src/FeatureProbe.ts index 7d51ae1..7da903f 100644 --- a/src/FeatureProbe.ts +++ b/src/FeatureProbe.ts @@ -7,6 +7,8 @@ import { DefaultEventsMap } from "@socket.io/component-emitter"; import { getPlatform } from "./platform"; import { EventRecorder } from "./EventRecorder"; import reportEvents from "./autoReportEvents"; +import flushEventBeforPageUnload from "./flushEvents"; + const KEY = "repository"; const EVENTS = { @@ -96,6 +98,8 @@ class FeatureProbe extends TinyEmitter { if (enableAutoReporting) { reportEvents(this.clientSdkKey, user, this.getEventsUrl, this.eventRecorder); } + + flushEventBeforPageUnload(this.eventRecorder); } /** diff --git a/src/flushEvents.ts b/src/flushEvents.ts new file mode 100644 index 0000000..3bd5f19 --- /dev/null +++ b/src/flushEvents.ts @@ -0,0 +1,20 @@ +import { EventRecorder } from "./EventRecorder"; + +export default function flushEventBeforPageUnload( + eventRecorder: EventRecorder +): void { + + const flushHandler = () => { + eventRecorder.flush(); + }; + + window.addEventListener("beforeunload", flushHandler); + window.addEventListener("unload", flushHandler); + window.addEventListener("pagehide", flushHandler); + + document.addEventListener("visibilitychange", function() { + if (document.visibilityState !== "visible") { + flushHandler(); + } + }); +} diff --git a/src/platform.ts b/src/platform.ts index 11794fd..57f0efe 100644 --- a/src/platform.ts +++ b/src/platform.ts @@ -35,6 +35,7 @@ const httpRequest:IHttpRequest = { cache: "no-cache", headers: headers, body: data, + keepalive: true, }) .then(response => { if (response.status >= 200 && response.status < 300) { From dc7afc0a3ed1529fa5161e47bb8e044a933ea7a5 Mon Sep 17 00:00:00 2001 From: frankzhaopeng Date: Wed, 22 Feb 2023 15:42:14 +0800 Subject: [PATCH 2/3] chore: upgrade version to 2.0.2 --- docs/classes/FPUser.html | 28 ++++---- docs/classes/FeatureProbe.html | 94 +++++++++++++------------- docs/functions/initializePlatform.html | 10 +-- docs/index.html | 8 +-- docs/interfaces/FPConfig.html | 30 ++++---- docs/interfaces/FPDetail.html | 24 +++---- docs/interfaces/FPStorageProvider.html | 14 ++-- docs/interfaces/IHttpRequest.html | 14 ++-- docs/interfaces/IOption.html | 12 ++-- docs/interfaces/IPlatForm.html | 16 ++--- docs/types/IReturnValue.html | 10 +-- package.json | 2 +- 12 files changed, 131 insertions(+), 131 deletions(-) diff --git a/docs/classes/FPUser.html b/docs/classes/FPUser.html index 306921a..77b7784 100644 --- a/docs/classes/FPUser.html +++ b/docs/classes/FPUser.html @@ -1,16 +1,16 @@ -FPUser | FeatureProbe Client Side SDK for JavaScript (2.0.1)
+FPUser | FeatureProbe Client Side SDK for JavaScript (2.0.2)
+
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -22,7 +22,7 @@

    Hierarchy

    • FPUser
    +
  • Defined in src/FPUser.ts:5
  • @@ -60,7 +60,7 @@

    Parameters

    Optional key: string

    Returns FPUser

    +
  • Defined in src/FPUser.ts:9
  • Properties

    @@ -72,12 +72,12 @@

    Type declaration

  • [key: string]: string
  • +
  • Defined in src/FPUser.ts:7
  • key: string
    +
  • Defined in src/FPUser.ts:6
  • Methods

    @@ -99,7 +99,7 @@
    attrs: { [key: [key: string]: string

    Returns FPUser

    +
  • Defined in src/FPUser.ts:53
    • @@ -116,7 +116,7 @@
      attrName: string

    Returns undefined | string

    +
  • Defined in src/FPUser.ts:67
    • @@ -129,7 +129,7 @@

      Returns {
      [key: string]: string

    +
  • Defined in src/FPUser.ts:42
  • +
  • Defined in src/FPUser.ts:31
    • @@ -156,7 +156,7 @@
      key: string

    Returns FPUser

    +
  • Defined in src/FPUser.ts:78
    • @@ -177,7 +177,7 @@
      attrValue: string

    Returns FPUser

    +
  • Defined in src/FPUser.ts:23
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -24,7 +24,7 @@

    Hierarchy

    • FeatureProbe
    +
  • Defined in src/FeatureProbe.ts:32
  • @@ -100,94 +100,94 @@
    __namedParameters: Returns FeatureProbe
    +
  • Defined in src/FeatureProbe.ts:51
  • Properties

    clientSdkKey: string
    +
  • Defined in src/FeatureProbe.ts:39
  • eventRecorder?: EventRecorder
    +
  • Defined in src/FeatureProbe.ts:49
  • eventsUrl: string
    +
  • Defined in src/FeatureProbe.ts:34
  • getEventsUrl: string
    +
  • Defined in src/FeatureProbe.ts:35
  • readyPromise: null | Promise<void>
    +
  • Defined in src/FeatureProbe.ts:44
  • realtimePath: string
    +
  • Defined in src/FeatureProbe.ts:37
  • realtimeUrl: string
    +
  • Defined in src/FeatureProbe.ts:36
  • refreshInterval: number
    +
  • Defined in src/FeatureProbe.ts:38
  • socket?: Socket<DefaultEventsMap, DefaultEventsMap>
    +
  • Defined in src/FeatureProbe.ts:48
  • status: string
    +
  • Defined in src/FeatureProbe.ts:45
  • +
  • Defined in src/FeatureProbe.ts:47
  • timeoutInterval: number
    +
  • Defined in src/FeatureProbe.ts:46
  • timeoutTimer?: Timer
    +
  • Defined in src/FeatureProbe.ts:43
  • timer?: Timer
    +
  • Defined in src/FeatureProbe.ts:42
  • toggles: undefined | { [key: string]: FPDetail }
    +
  • Defined in src/FeatureProbe.ts:41
  • togglesUrl: string
    +
  • Defined in src/FeatureProbe.ts:33
  • user: FPUser
    +
  • Defined in src/FeatureProbe.ts:40
  • Methods

    @@ -199,7 +199,7 @@
    +
  • Defined in src/FeatureProbe.ts:292
    • @@ -220,7 +220,7 @@
      defaultValue: boolean

    Returns FPDetail

    +
  • Defined in src/FeatureProbe.ts:246
    • @@ -241,7 +241,7 @@
      defaultValue: boolean

    Returns boolean

    +
  • Defined in src/FeatureProbe.ts:194
  • +
  • Defined in src/FeatureProbe.ts:369
  • +
  • Defined in src/FeatureProbe.ts:533
  • +
  • Defined in src/FeatureProbe.ts:491
  • +
  • Defined in src/FeatureProbe.ts:329
  • +
  • Defined in src/FeatureProbe.ts:302
    • @@ -320,7 +320,7 @@
      user:

    Returns void

    +
  • Defined in src/FeatureProbe.ts:312
  • +
  • Defined in src/FeatureProbe.ts:285
  • +
  • Defined in src/FeatureProbe.ts:233
  • +
  • Defined in src/FeatureProbe.ts:321
    • @@ -393,7 +393,7 @@
      defaultValue: number

    Returns FPDetail

    +
  • Defined in src/FeatureProbe.ts:259
    • @@ -414,7 +414,7 @@
      defaultValue: number

    Returns number

    +
  • Defined in src/FeatureProbe.ts:207
  • +
  • Defined in src/FeatureProbe.ts:108
  • +
  • Defined in src/FeatureProbe.ts:141
    • @@ -508,7 +508,7 @@
      defaultValue: string

    Returns FPDetail

    +
  • Defined in src/FeatureProbe.ts:272
    • @@ -529,7 +529,7 @@
      defaultValue: string

    Returns string

    +
  • Defined in src/FeatureProbe.ts:220
  • +
  • Defined in src/FeatureProbe.ts:520
    • @@ -554,7 +554,7 @@
      defaultValue: string

    Returns FPDetail

    +
  • Defined in src/FeatureProbe.ts:430
    • @@ -571,7 +571,7 @@
      defaultValue: string

    Returns IReturnValue

    +
  • Defined in src/FeatureProbe.ts:388
    • @@ -590,7 +590,7 @@
      user: string
      Optional value: unknown

    Returns void

    +
  • Defined in src/FeatureProbe.ts:336
  • +
  • Defined in src/FeatureProbe.ts:154
    • @@ -618,7 +618,7 @@
      toggles: { [key: [key: string]: boolean

    Returns FeatureProbe

    +
  • Defined in src/FeatureProbe.ts:346
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    +
  • Defined in src/index.ts:12
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    -

    FeatureProbe Client Side SDK for JavaScript (2.0.1)

    +

    FeatureProbe Client Side SDK for JavaScript (2.0.2)

    Index

    @@ -54,7 +54,7 @@

    Theme

    FeatureProbe Client Side SDK for JavaScript (2.0.1) +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    +
  • Defined in src/types.ts:93
  • enableAutoReporting?: boolean

    Whether SDK should report pageview and click event automatically. Default value is true.

    +
  • Defined in src/types.ts:113
  • eventsUrl?: string

    The specific URL to post events, if not set, will generate from remoteUrl.

    +
  • Defined in src/types.ts:78
  • realtimePath?: string

    The specific path to receive realtime events, if not set, default value will be used.

    +
  • Defined in src/types.ts:88
  • realtimeUrl?: string

    The specific URL to receive realtime events, if not set, will generate from remoteUrl.

    +
  • Defined in src/types.ts:83
  • refreshInterval?: number

    Milliseconds for SDK to check for update.

    +
  • Defined in src/types.ts:103
  • remoteUrl?: string

    The unified URL to connect FeatureProbe Server.

    +
  • Defined in src/types.ts:68
  • timeoutInterval?: number

    Milliseconds for SDK to initialize, SDK will emit an error event when milliseconds reach.

    +
  • Defined in src/types.ts:108
  • togglesUrl?: string

    The specific URL to get toggles, if not set, will generate from remoteUrl.

    +
  • Defined in src/types.ts:73
  • user: FPUser

    The User with attributes like name, age is used when toggle evaluation.

    +
  • Defined in src/types.ts:98
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -18,7 +18,7 @@

    Hierarchy

    • FPDetail
    +
  • Defined in src/types.ts:27
  • @@ -42,49 +42,49 @@
    +
  • Defined in src/types.ts:61
  • reason: string

    Why return this value, like disabled, default, not exist and so on.

    +
  • Defined in src/types.ts:51
  • ruleIndex: null | number

    The sequence number of the rule in the UI configuration that hit the rule.

    +
  • Defined in src/types.ts:36
  • trackAccessEvents?: boolean

    Whether to report access events.

    +
  • Defined in src/types.ts:56
  • value: string | number | boolean | Record<string, unknown>

    The value corresponding to the rule in the UI platform.

    +
  • Defined in src/types.ts:31
  • variationIndex: null | number

    The sequence number of the variation in the UI platform.

    +
  • Defined in src/types.ts:41
  • version: null | number

    The version of the toggle.

    +
  • Defined in src/types.ts:46
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -18,7 +18,7 @@

    Hierarchy

    • FPStorageProvider
    +
  • Defined in src/types.ts:116
  • @@ -52,7 +52,7 @@
    key: string

    Returns Promise<string>

    +
  • Defined in src/types.ts:134
  • setItem: ((key: string, data: string) => Promise<void>)
    @@ -78,7 +78,7 @@
    data: string

    Returns Promise<void>

    +
  • Defined in src/types.ts:126
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -18,7 +18,7 @@

    Hierarchy

    • IHttpRequest
    +
  • Defined in src/types.ts:137
  • @@ -78,7 +78,7 @@
    e: string

    Returns void

    Returns void

    +
  • Defined in src/types.ts:138
  • post: ((url: string, headers: Record<string, string>, data: string, successCb: (() => void), errorCb: ((e: string) => void)) => void)
    @@ -121,7 +121,7 @@
    e: string

    Returns void

    Returns void

    +
  • Defined in src/types.ts:145
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -18,7 +18,7 @@

    Hierarchy

    • IOption
    +
  • Defined in src/types.ts:160
  • @@ -34,7 +34,7 @@

    Properties

    platform: IPlatForm
    +
  • Defined in src/types.ts:161
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    @@ -18,7 +18,7 @@

    Hierarchy

    • IPlatForm
    +
  • Defined in src/types.ts:154
  • @@ -36,17 +36,17 @@

    Properties

    UA: string
    +
  • Defined in src/types.ts:156
  • httpRequest: IHttpRequest
    +
  • Defined in src/types.ts:157
  • localStorage: FPStorageProvider
    +
  • Defined in src/types.ts:155
  • +
  • The search index is not available
  • FeatureProbe Client Side SDK for JavaScript (2.0.2)
    IReturnValue: string | number | boolean | Record<string, unknown>
    +
  • Defined in src/types.ts:25